[英]minimal java8 nio secure websocket client (wss)
我花了相當多的時間來找到可以與 wss 一起使用並且不會一團糟的簡單 java websocket 客戶端...
我試過https://github.com/TooTallNate/Java-WebSocket
在他描述時添加了依賴項,復制了 SSLClientExample.java 以使用 websocket.org 回顯服務器對其進行測試,但在第 84 行出現編譯錯誤,沒有這樣的方法 setSocket()...(卡在此處)
我嘗試過 tyrus(似乎這是一個由 oracle 直接開發的大型庫),但似乎我需要運行一些應用程序服務器(websocket 容器)才能使用它...
我想知道 websockets 有什么難點,以至於需要使用 netty 或 glassfish 或 grizly 才能做到這一點?
我認為可以使用 SSLEngine (wss) 和純 Java sdk 來實現一個......我對 websockets 有什么不了解的地方嗎? (我想象它很像普通的插座)
nv-websocket-client是一個用 Java 編寫的新的 WebSocket 客戶端庫。 它支持wss並且只需要 Java SE 1.5,因此它甚至可以在 Android 上運行。
nv-websocket-client-1.3.jar
(2015-05-06 發布)大小為 62,854 字節,不需要任何外部依賴。
下面是一個“wss”示例。
import com.neovisionaries.ws.client.*;
public class HelloWSS
{
public static void main(String[] args) throws Exception
{
// Connect to "wss://echo.websocket.org" and send "Hello." to it.
// When a response from the WebSocket server is received, the
// WebSocket connection is closed.
new WebSocketFactory()
.createSocket("wss://echo.websocket.org")
.addListener(new WebSocketAdapter() {
@Override
public void onTextMessage(WebSocket ws, String message) {
// Received a response. Print the received message.
System.out.println(message);
// Close the WebSocket connection.
ws.disconnect();
}
})
.connect()
.sendText("Hello.");
}
}
博客
WebSocket 客戶端庫(Java SE 1.5+,Android)
http://darutk-oboegaki.blogspot.jp/2015/05/websocket-client-library-java-se-15.html
GitHub
https://github.com/TakahikoKawasaki/nv-websocket-client
文檔
http://takahikokawasaki.github.io/nv-websocket-client/
馬文
<dependency>
<groupId>com.neovisionaries</groupId>
<artifactId>nv-websocket-client</artifactId>
<version>1.3</version>
</dependency>
Tyrus客戶端不需要有應用程序服務器! :)
請參閱Tyrus 文檔和博客文章Reducing WebSocket client jar size with ProGuard (使用 JDK 7+ 可以減少到 500 kB)。
關於大小 - 它可以最小化更多,但在 Tyrus 代碼中進行了一些重構。 WebSocket 和普通套接字的比較不是很准確——普通套接字不需要實現 HTTP 並且(傳統上)沒有 NIO 支持(Java 7 附帶的)。 另一部分是 WebSocket 協議的實現,它並不難,而且不僅僅是將 byte[] 發送到線路 - 有一些打開握手、信令幀和強制嚴格的 UTF-8 編碼/解碼。
所以我想你可以找到更簡單的 API 實現,但是堅持一些維護的東西並且是 Java EE 的一部分對我來說似乎並不壞 - 你有可能選擇實現(Tyrus 只是其中之一,還有其他的) 並且您的客戶端將准備好包含在 Java EE 應用程序中(如果發生這種情況)。 (編者注:我在 Tyrus 上工作,所以我的回答很可能是有偏見的)。
試試 Matthias 的 simple-websocket-client。 (我只是他在 Twitter 上的追隨者之一)您可能同意他對該項目的潛在意圖。
來自https://github.com/matzew/simple-websocket-client
JSR 356 描述了 WebSocket 服務器和客戶端的標准 API,但客戶端 API 非常復雜。 該項目旨在提供一個簡化的客戶端。
順便說一句,任何 WebSocket 客戶端都不需要 WebSocket 服務器,並且可以在純 Java SE 上編寫自己的客戶端。 然而,由於易於與其他技術集成比簡單更重要,您可能會覺得有一些看起來復雜和不必要的底層上下文。
GO for Java Webscoket API,簡單而優雅。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.