[英]Play framework 2.5.x Web Socket Java
我按照Play框架2.5.x的官方文檔中的說明訪問Java Websockets,我創建了一個具有此功能的控制器
public static LegacyWebSocket<String> socket() {
return WebSocket.withActor(MyWebSocketActor::props);
}
還有一個Actor類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,正如官方文檔中所寫:
提示:您可以在https://www.websocket.org/echo.html上測試WebSocket控制器。 只需將位置設置為ws:// localhost:9000。
但是網絡套接字似乎無法訪問,我該如何測試呢?
謝謝
為了處理WebSocket連接,您還必須在routes
文件中添加routes
。
GET /ws controllers.Application.socket()
然后你的WebSocket端點將是ws://localhost:9000/ws
- 用它來測試echo服務。
最后在安東的幫助下我解決了它! 首先:從socket()方法中刪除static
public LegacyWebSocket<String> socket() {
return WebSocket.withActor(MyWebSocketActor::props);
}
然后在路由文件中為socket()方法添加端點
GET /ws controllers.HomeController.socket()
此時,您必須以這種方式使用SSL / TLS啟動應用程序,例如:
activator run -Dhttps.port=9443
在websocket.org/echo.html中,在位置字段中插入wss://localhost:9443/ws
,它連接到websocket!
此外,如果我訪問https://localhost:9443/ws
我繼續獲取該消息
需要升級到WebSocket
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.