简体   繁体   English

java有没有极简的WebSocket客户端库?

[英]Is there a minimalist WebSocket client library for java?

The title says it all.标题说明了一切。

I'm trying to make a video game that connects to a server hosted on heroku for file verification.我正在尝试制作一个连接到 heroku 上托管的服务器的视频游戏以进行文件验证。

Since heroku doesn't support vinella sockets I have to use websockets.由于 heroku 不支持 vinella sockets 我必须使用 websockets。 I can make a websocket server just fine with Ruby or with some big java framework but I can't find a lightweight solution for making a client socket with java.我可以用 Ruby 或一些大的 java 框架制作一个 websocket 服务器,但我找不到用 java 制作客户端套接字的轻量级解决方案。

Thanks in advance!提前致谢!

JSR 356 (Java API for WebSocket) , part of Java EE 7 defines client API. JSR 356(Java API for JavaSocket)是Java EE 7的一部分,它定义了客户端API。 There are multiple implementations: Tyrus (glassfish/WLS), Tomcat, ...; 有多种实现:Tyrus(glassfish / WLS),Tomcat,......; basically every container do provide the implementation or this api, even if not implementing other Java EE 7 specifications. 基本上每个容器都提供实现或这个api,即使没有实现其他Java EE 7规范。

Simple example: 简单的例子:

        final WebSocketContainer client = ContainerProvider.getWebSocketContainer();
        final Session session = client.connectToServer(new Endpoint() {
            @Override
            public void onOpen(Session session, EndpointConfig EndpointConfig) {

                try {
                    session.addMessageHandler(new MessageHandler.Whole<String>() {
                        @Override
                        public void onMessage(String message) {
                            System.out.println("### Received: " + message);
                        }
                    });

                    session.getBasicRemote().sendText("Do or do not, there is no try.");
                } catch (IOException e) {
                    // do nothing
                }
            }

            @Override
            public void onClose(Session session, CloseReason closeReason) {
                System.out.println("### Client session closed: " + closeReason);
            }
        }, ClientEndpointConfig.Builder.create().build(), URI.create("ws://echo.websocket.org"));

You can check Client Endpoint chapter in Tyrus user guide for more details. 您可以在Tyrus用户指南中查看Client Endpoint章节以获取更多详细信息。

Jetty has WebSocket Client API Jetty有WebSocket Client API

Jetty WebSocket Client API Jetty WebSocket客户端API

Just for completeness in future search hits, JavaSE 11 now has WebSocket support as well, in the java.net.http package .为了将来搜索结果的完整性,JavaSE 11 现在也支持 WebSocket,在java.net.http package中。

Although I confess I'm finding only basic documentation and simplistic examples so far.尽管我承认到目前为止我只找到基本的文档和简单的示例。 Which leaves a bit to be desired in implementing a complete, robust solution.这在实施一个完整、健壮的解决方案方面还有一些不足之处。 Among other things, a decent understanding of Java Concurrency seems to be required.除其他外,似乎需要对 Java 并发有一个体面的理解。

There's a little bit here: Require assistance with simple pure Java 11 WebSocket client example这里有一点:需要帮助简单的纯 Java 11 WebSocket 客户端示例

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM