Java WebSocket:如何在不编写客户端的情况下测试服务器 WebSocket 端点 [关闭]

     2023-03-08     134

关键词:

【中文标题】Java WebSocket:如何在不编写客户端的情况下测试服务器 WebSocket 端点 [关闭]【英文标题】:Java WebSocket: How can I test a Server WebSocket endpoint without writing a client [closed] 【发布时间】:2019-09-21 05:15:20 【问题描述】:

我正在使用 Glassfish 服务器来托管使用 javax.websocket 的基本 Web Socket 服务器。

这是服务器代码:

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;

@ServerEndpoint("/websocket/server")
public class WebSocketServer 
    @OnOpen
    public void onOpen(Session session) 
        System.out.println(String.format("Connection Established::%s", session.getId()));
        RemoteEndpoint.Basic remoteEndpoint = session.getBasicRemote();
        session.addMessageHandler(new ServerMessageHandler(remoteEndpoint));
    

    @OnClose
    public void onClose(Session session) 
        System.out.println(String.format("Connection closed::%s", session.getId()));
    

    @OnError
    public void onError(Throwable t) 
        System.out.println(t.toString());
    

    @OnMessage
    public void onMessage(Session session, String message) 
        System.out.println(String.format("Received message::%s - sessionId::%s", message, session.getId()));
    

    private class ServerMessageHandler implements MessageHandler.Whole<String> 
        private RemoteEndpoint.Basic _remoteEndpoint;

        ServerMessageHandler(RemoteEndpoint.Basic remoteEndpoint) 
            this._remoteEndpoint = remoteEndpoint;
        
        public void onMessage(String message) 
            try 
                _remoteEndpoint.sendText(message);
             catch (IOException e) 
                e.printStackTrace();
            
        
    

这是运行服务器的控制台应用程序:

    import org.glassfish.tyrus.server.Server;

import javax.websocket.DeploymentException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main 
    public static void main(String[] args) 
        runServer();
    

    private static void runServer() 
        Server server = null;
        try 
            server = new Server("localhost", 8080, "/websocket", null, WebSocketServer.class);
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            server.start();
            System.out.println("Please press a key to stop the server.");
            reader.readLine();
         catch (IOException e) 
            throw new RuntimeException(e);
         catch (DeploymentException e) 
            throw new RuntimeException(e);
         finally 
            if (server != null) 
                server.stop();
            
        
    

我的问题是,当我运行此控制台应用程序并运行 Websocket 服务器时,我可以测试我的端点以验证它是否正常工作甚至调试到服务器代码(onOpen、onClose 等)的最佳方法是什么。我试图使用 Postman 访问 ws:\localhost:8080\websocket\server,但这不起作用。我对 Web Sockets 完全陌生,因此由于缺乏技术经验和知识,我的想法可能是错误的。

谢谢。

【问题讨论】:

【参考方案1】:

https://postwoman.io/ 也支持 websocket 连接,但是使用起来有点不方便,因为它甚至禁止从响应中复制

就个人而言,我使用带有自定义 URL 的 https://www.websocket.org/echo.html 页面,但如果您想要代码 sn-ps、请求前和请求后测试,我建议您编写自己的客户端

【讨论】:

【参考方案2】:

Postman 不支持,但WebSocket King 提供了一个类似的接口,专门为 Web 套接字设计。

【讨论】:

Java EE Websocket:如何在不接收消息的情况下继续发送数据?

】JavaEEWebsocket:如何在不接收消息的情况下继续发送数据?【英文标题】:JavaEEWebsocket:Howtosendkeepsendingdatawithoutreceivingmessage?【发布时间】:2014-07-1117:19:02【问题描述】:我想要什么?我正在尝试编写一个应用程序,其中客户端... 查看详情

通过java客户端的netty websocket连接

】通过java客户端的nettywebsocket连接【英文标题】:nettywebsocketconnectionviajavaclient【发布时间】:2012-09-1309:57:22【问题描述】:是否可以在没有握手请求的情况下在java代码中创建websocket连接?我知道如何使用以下命令创建一个握手... 查看详情

来自客户端的 Java (Tomcat) websocket 参数

】来自客户端的Java(Tomcat)websocket参数【英文标题】:Java(Tomcat)websocketparametersfromclientside【发布时间】:2020-03-0617:51:41【问题描述】:我需要将一些参数从javascript客户端传递到Tomcat中的Java端点。使用Tomcat,您可以使用@ServerEndpoint(... 查看详情

Java WebSocket 获取客户端的专有名称

】JavaWebSocket获取客户端的专有名称【英文标题】:JavaWebSocketgetdistinguishednameofclient【发布时间】:2014-07-3121:20:41【问题描述】:我有一个在GlassFish上运行的JavaWebSocket服务器,用户将使用我们提供给他们的客户端TLS证书进行连接... 查看详情

如何编写一个 websocket 客户端

】如何编写一个websocket客户端【英文标题】:Howtowriteawebsocketclient【发布时间】:2010-12-1213:42:23【问题描述】:我正在尝试在node.js上对我的websocket进行单元测试,并想模拟一个websocket客户端。我可以创建一个仅连接到我的服务器... 查看详情

NGINX 监听 websocket 客户端的调用

】NGINX监听websocket客户端的调用【英文标题】:NGINXlistenwebsocketclient\'scall【发布时间】:2017-11-2601:21:09【问题描述】:我在Ubuntu14.04LTS机器上有一个简单的nodejs。即使客户端在localhost:3000上,如何配置nginx或乘客来监听对ws://localhos... 查看详情

如何在websocket的服务器侧检测客户端的断开连接

参考技术A我用chrome启动websocket,用c#写服务器。能够建立链接(handshake),可是chrome的websocket在发送信息4次之后,会主动关闭链接。这里检查过不是服务器主动关闭,服务器没有异常。服务器的逻辑也很简单,当建立了handshake... 查看详情

如何在 Julia 中编写 WebSocket 客户端?

】如何在Julia中编写WebSocket客户端?【英文标题】:HowcanIwriteaWebSocketclientinJulia?【发布时间】:2016-09-0600:28:42【问题描述】:我想通过Julia连接到WebSocket。我试图从wss://echo.websocket.org获得回声响应,但它似乎没有像我预期的那样... 查看详情

如何将消息从golang的websocket服务器主动发送到客户端

】如何将消息从golang的websocket服务器主动发送到客户端【英文标题】:Howtosendthemessagesactivelyfromgolang\'swebsocketservertoclient【发布时间】:2018-05-2405:12:56【问题描述】:我是golang和websocket的新手。我正在尝试编写一个websocket服务器... 查看详情

websocket实战信息处理发送接收和编码

websocket和传统意义上的socket编程虽然存在差别,但也存在相通概念,也分服务端和客户端。主要区别对于websocket,客户端的编写方式是通过JS编写回调函数完成交互;而传统socket,则需要连接端口,通过输入输出流来传递信息,完... 查看详情

WebSocket 来自客户端的位置

】WebSocket来自客户端的位置【英文标题】:WheretheWebSocketcomesfromontheclientside【发布时间】:2016-07-2909:59:57【问题描述】:我已经在服务器端和客户端之间进行了套接字通信。但是WebSocket的实体是从哪里来的呢?客户端代码:var_ws=... 查看详情

纯 Java 中的 WebSocket

】纯Java中的WebSocket【英文标题】:WebSocketinPlainJava【发布时间】:2021-04-1719:17:03【问题描述】:我正在用一个WebServer和一个WebSocket服务器为我编写一个Web框架。我最近的问题是,我的WebSocket客户端的响应内容非常有趣......每次值... 查看详情

初识websocket及java服务端的简单实现

概念:WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocketAPI中,浏览器和服务器只需要完成一次握手,两者之间就直接... 查看详情

WebSocket 客户端的状态不会因网络丢失而改变

】WebSocket客户端的状态不会因网络丢失而改变【英文标题】:WebSocketClient\'sStateNotChangingonNetworkLoss【发布时间】:2013-10-2119:11:17【问题描述】:使用Microsoft.Web.WebSockets.WebSocketHandler处理WebSocket服务器,我将连接的客户端保存在WebSo... 查看详情

带有移动客户端的 websocket

】带有移动客户端的websocket【英文标题】:websocketswithmobileclients【发布时间】:2011-09-1315:51:42【问题描述】:是否必须让客户端成为Web服务器的浏览器?对于拥有一些非浏览器客户端并从网络服务器获取数据的移动客户端来说,... 查看详情

Websocket 客户端的 Wildfly URI

】Websocket客户端的WildflyURI【英文标题】:WildflyURIforWebsocketClient【发布时间】:2018-03-1010:46:26【问题描述】:嘿,我正在努力将我的客户端连接到我的WebSocketEndpoint,我安装了Wildfly11,它正在运行本地主机:9990问题是连接到我的... 查看详情

带有 Javascript 客户端的 WCF 自托管 WebSocket 服务

】带有Javascript客户端的WCF自托管WebSocket服务【英文标题】:WCFself-hostedWebSocketServicewithJavascriptclient【发布时间】:2014-08-0601:22:48【问题描述】:我有这个WCF自托管WebSocket服务代码:主要://CreateaURItoserveasthebaseaddressUrihttpUrl=newUri("... 查看详情

javascript使用deepstream客户端的websocket实现(代码片段)

查看详情