簡體   English   中英

播放框架2.5.x Web Socket Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM