您当然可以在浏览器沙箱之外的 Java 桌面应用程序中使用 WebSocket。这背后的想法是您可以创建创建 TCP 连接的胖客户端,因此它们当然应该能够在这些 TCP 连接之上创建 WebSocket 连接。
Kaazing 编写了用于执行此操作的最新和最佳 API 之一,他认为 WebSocket 就像一个套接字,可以使用简单的“ws://”URI 创建。
API 详细讨论on the Kaazing Gateway 5.0 Java WebSocket Documentation site。您可以从 Kaazing here 下载普通网关
创建一个网络套接字:
import com.kaazing.net.ws.WebSocket;
import com.kaazing.net.ws.WebSocketFactory;
wsFactory = WebSocketFactory.createWebSocketFactory();
ws = wsFactory.createWebSocket(URI.create("ws://example.com:8001/path"));
ws.connect(); // This will block or throw an exception if failed.
要发送消息,请添加一个 WebSocketMessageWriter 对象:
WebSocketMessageWriter writer = ws.getMessageWriter();
String text = "Hello WebSocket!";
writer.writeText(text); // Send text message
要接收或消费消息,请添加 WebSocket 和 WebSocketMessageReader 对象:
wsFactory = WebSocketFactory.createWebSocketFactory();
ws = wsFactory.createWebSocket(URI.create("ws://example.com:8001/path"));
ws.connect(); // This will block or throw an exception if failed.
WebSocketMessageReader reader = ws.getMessageReader();
WebSocketMessageType type = null; // Block till a message arrives
// Loop till the connection goes away
while ((type = reader.next()) != WebSocketMessageType.EOS) {
switch (type) { // Handle both text and binary messages
case TEXT:
CharSequence text = reader.getText();
log("RECEIVED TEXT MESSAGE: " + text.toString());
break;
case BINARY:
ByteBuffer buffer = reader.getBinary();
log("RECEIVED BINARY MESSAGE: " + getHexDump(buffer));
break;
}
}
(完全披露:我曾在 Kaazing Corporation 担任服务器工程师。)