我正在使用Glassfish服务器使用javax.websocket托管基本的Web套接字服务器。
这是服务器代码:
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套接字,因此由于缺乏对该技术的经验和知识,我的想法可能是错误的。
谢谢。
答案 0 :(得分:1)
https://postwoman.io/也支持websocket连接,但是使用它有点不方便,因为它甚至禁止响应中复制
我个人使用带有自定义URL的https://www.websocket.org/echo.html页面,但是如果您需要代码段,请求前和请求后测试,建议您编写自己的客户端
答案 1 :(得分:0)
如果您使用的是Chrome,则可以尝试使用Dark Websocket Terminal插件:https://chrome.google.com/webstore/detail/dark-websocket-terminal/dmogdjmcpfaibncngoolgljgocdabhke。
Postman更适合测试REST和SOAP端点,似乎不再支持WebSocket端点:Websocket connections with postman
答案 2 :(得分:0)
邮递员不支持它,但是WebSocket King提供了一个专门为Web套接字设计的类似接口。