最小 java8 nio 安全 websocket 客户端 (wss)
minimal java8 nio secure websocket client (wss)
我花了很多时间来寻找简单的 java websocket 客户端,它可以与 wss 一起工作并且不会一团糟...
我试过了https://github.com/TooTallNate/Java-WebSocket
添加了他描述的依赖项,复制了 SSLClientExample.java 以使用 websocket.org 回显服务器对其进行测试,但在第 84 行出现编译错误,没有这样的方法 setSocket()...(卡在这里)
我尝试过 tyrus(似乎这是一个由 oracle 直接开发的大型库),但似乎我需要一些应用服务器 运行(websocket 容器)才能使用它...
我想知道 websockets 有什么难的,以至于需要 netty 或 glassfish 或 grizly?
我认为可以使用 SSLEngine (wss) 和纯 java sdk 来实现一个...关于 websockets 有什么我不知道的吗? (我觉得很像普通的插座)
Tyrus客户端不需要应用服务器! :)
请参阅 Tyrus documentation and blogpost Reducing WebSocket client jar size with ProGuard(使用 JDK 7+ 可以降低到 500 kB)。
关于大小 - 它可以进一步缩小,但需要在 Tyrus 代码中进行一些重构。 WebSocket 和普通套接字的比较不是很准确——普通套接字不需要实现 HTTP 并且(传统上)没有 NIO 支持(Java 7)。另一部分是 WebSocket 协议实现,这并不难,但它不仅仅是将 byte[] 发送到线路 - 有一些打开握手、信号帧和强制性严格的 UTF-8 encoding/decoding.
所以我想你可以找到更简单的 API 实现,但坚持一些维护的东西并且是 Java EE 的一部分对我来说似乎并不坏 - 你可以选择实现(Tyrus 只是其中之一,还有其他实现),如果发生这种情况,您的客户将准备好包含到 Java EE 应用程序中。 (编者注:我在 Tyrus 工作,所以我的回答很可能有偏见)。
试试 Matthias 的 simple-websocket-client。 (我只是他在推特上的追随者之一)你可能同意他对该项目的潜在意图。
来自https://github.com/matzew/simple-websocket-client
The JSR 356 describes a standard API for WebSocket Server and clients, but the client API is very complex. This project aims to offer a simplified client.
顺便说一句,任何 WebSocket 客户端都不需要 WebSocket 服务器,并且可以在纯 Java SE 上编写您自己的客户端。然而,由于易于与其他技术集成比简单更重要,您可能会觉得有一些看起来复杂且不必要的底层上下文。
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
Java文档
http://takahikokawasaki.github.io/nv-websocket-client/
Maven
<dependency>
<groupId>com.neovisionaries</groupId>
<artifactId>nv-websocket-client</artifactId>
<version>1.3</version>
</dependency>
GO for Java Websocket API,简单而优雅。
我花了很多时间来寻找简单的 java websocket 客户端,它可以与 wss 一起工作并且不会一团糟...
我试过了https://github.com/TooTallNate/Java-WebSocket
添加了他描述的依赖项,复制了 SSLClientExample.java 以使用 websocket.org 回显服务器对其进行测试,但在第 84 行出现编译错误,没有这样的方法 setSocket()...(卡在这里)
我尝试过 tyrus(似乎这是一个由 oracle 直接开发的大型库),但似乎我需要一些应用服务器 运行(websocket 容器)才能使用它...
我想知道 websockets 有什么难的,以至于需要 netty 或 glassfish 或 grizly?
我认为可以使用 SSLEngine (wss) 和纯 java sdk 来实现一个...关于 websockets 有什么我不知道的吗? (我觉得很像普通的插座)
Tyrus客户端不需要应用服务器! :)
请参阅 Tyrus documentation and blogpost Reducing WebSocket client jar size with ProGuard(使用 JDK 7+ 可以降低到 500 kB)。
关于大小 - 它可以进一步缩小,但需要在 Tyrus 代码中进行一些重构。 WebSocket 和普通套接字的比较不是很准确——普通套接字不需要实现 HTTP 并且(传统上)没有 NIO 支持(Java 7)。另一部分是 WebSocket 协议实现,这并不难,但它不仅仅是将 byte[] 发送到线路 - 有一些打开握手、信号帧和强制性严格的 UTF-8 encoding/decoding.
所以我想你可以找到更简单的 API 实现,但坚持一些维护的东西并且是 Java EE 的一部分对我来说似乎并不坏 - 你可以选择实现(Tyrus 只是其中之一,还有其他实现),如果发生这种情况,您的客户将准备好包含到 Java EE 应用程序中。 (编者注:我在 Tyrus 工作,所以我的回答很可能有偏见)。
试试 Matthias 的 simple-websocket-client。 (我只是他在推特上的追随者之一)你可能同意他对该项目的潜在意图。
来自https://github.com/matzew/simple-websocket-client
The JSR 356 describes a standard API for WebSocket Server and clients, but the client API is very complex. This project aims to offer a simplified client.
顺便说一句,任何 WebSocket 客户端都不需要 WebSocket 服务器,并且可以在纯 Java SE 上编写您自己的客户端。然而,由于易于与其他技术集成比简单更重要,您可能会觉得有一些看起来复杂且不必要的底层上下文。
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
Java文档
http://takahikokawasaki.github.io/nv-websocket-client/
Maven
<dependency>
<groupId>com.neovisionaries</groupId>
<artifactId>nv-websocket-client</artifactId>
<version>1.3</version>
</dependency>
GO for Java Websocket API,简单而优雅。