我按照playframework2.5.x到javawebsockets的官方文档中的说明,创建了一个具有此函数的控制器
public static LegacyWebSocket<String> socket() {
return WebSocket.withActor(MyWebSocketActor::props);
}
还有一个演员类mywebsocketactor:
public class MyWebSocketActor extends UntypedActor {
public static Props props(ActorRef out) {
return Props.create(MyWebSocketActor.class, out);
}
private final ActorRef out;
public MyWebSocketActor(ActorRef out) {
this.out = out;
}
public void onReceive(Object message) throws Exception {
if (message instanceof String) {
out.tell("I received your message: " + message, self());
}
}
}
然后应用程序启动我尝试在ws://localhost:9000 as 在官方文件中写道:
提示:您可以在上测试websocket控制器https://www.websocket.org/echo.html. 只需将位置设置为ws://localhost:9000.
但是web套接字似乎无法访问,如何测试它?
谢谢
2条答案
按热度按时间qaxu7uf21#
为了处理websocket连接,还必须在
routes
文件。GET /ws controllers.Application.socket()
那么您的websocket端点将是ws://localhost:9000/ws
-使用它来测试echo服务。pjngdqdw2#
在安东的帮助下,我终于解决了这个问题!第一个:remove static from socket()方法
然后在routes文件中为socket()方法添加一个端点
此时,您必须以这种方式使用ssl/tls启动应用程序,例如:
在websocket.org/echo.html中插入
wss://localhost:9443/ws
在位置字段中,它连接到websocket!如果我来拜访
https://localhost:9443/ws
我继续得到消息需要升级到websocket