没有浏览器的 Java Websocket 客户端

标签 java html websocket client

我正在从事一个需要用户之间进行实时交互的项目。我想要一个 HTML5 网络客户端(足够简单)和一个本地客户端(最好是 Java),两者都能够连接到服务器。我做了一些研究,但没有找到关于本地客户端是否可以在没有浏览器的情况下连接到服务器的决定性答案。

问题:有没有什么方法可以在不浏览的情况下从本地 Java 客户端连接到 websocket 服务器?我已经看到一些其他语言的浏览器包装器可能使这成为可能。如果没有,我愿意接受建议。

谢谢。

最佳答案

您也可以考虑使用 JSR 356 - Java API for WebSocket .它是 Java EE 7 的一部分,但客户端可以从普通 Java SE 运行而不会出现任何问题。现在有多种实现可用,以下将适用于所有这些实现:

程序化 API:

    final WebSocketContainer webSocketContainer = ContainerProvider.getWebSocketContainer();

    Session session = webSocketContainer.connectToServer(new Endpoint() {
        @Override
        public void onOpen(Session session, EndpointConfig config) {
            // session.addMessageHandler( ... );
        }
    }, URI.create("ws://some.uri"));

带注释的 API:

public static void main(String[] args) throws IOException, DeploymentException {
    final WebSocketContainer webSocketContainer = ContainerProvider.getWebSocketContainer();
    webSocketContainer.connectToServer(MyEndpoint.class, URI.create("ws://some.uri"));
}

@ClientEndpoint
public static class MyEndpoint {

    // text
    @OnMessage
    void onMessage(Session session, String message) {
        // ...
    }

    // binary
    @OnMessage
    void onMessage(Session session, ByteBuffer message) {
        // ...
    }

    // @OnClose, @OnOpen, @OnError
}

请参阅链接页面了解更多详情(完整规范)。

这里有多种实现,基本上每个 Java 容器都有一个。我正在研究 Glassfish/WebLogic 实现,它叫做 Tyrus ,请随时尝试(我们提供易于使用的 bundle ,请参阅 http://search.maven.org/...)。

关于没有浏览器的 Java Websocket 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194294/

相关文章:

html - 相对于父而不是浏览器的固定位置

javascript - 找出两个 dom 元素的差异,然后使它们相同

c# - 将 WebSocket 与 ASP.NET Web API 结合使用

javascript - Android phonegap 中的 WebSocket HTML5

java - 密码学 : using Password Based Encryption (PBE)

java - WebSecurityConfigurerAdapter 不起作用

java - 下载目标定义文件中定义的插件?

java - 实体管理器获取或创建

html - 不熟悉的 Javascript 语法/hack

websocket - 天文台服务器启动失败-创建套接字服务器失败