簡體   English   中英

最小的 java8 nio 安全 websocket 客戶端 (wss)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM