代码之家  ›  专栏  ›  技术社区  ›  Arya

Okhttp websocket向打开的套接字发送消息

  •  0
  • Arya  · 技术社区  · 7 年前

    现在我有下面的类,它使用OkHttp处理WebSockets,但是它的设置方式是,我没有办法保持WebSocket打开,这样我就可以向WebSocket发送新消息。如何在不创建新的websocket连接的情况下继续向同一个打开的websocket发送消息?

    public class OkHttp extends WebSocketListener {
        public void run() {
            String hostname = "127.0.0.1";
            int port = 8888;
            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(hostname, port));
    
            OkHttpClient client = new OkHttpClient.Builder().proxy(proxy).readTimeout(10, TimeUnit.SECONDS).build();
    
            Request request = new Request.Builder().url("ws://echo.websocket.org").build();
            client.newWebSocket(request, this);
    
            // Trigger shutdown of the dispatcher's executor so this process can exit
            // cleanly.
            client.dispatcher().executorService().shutdown();
        }
    
        @Override
        public void onOpen(WebSocket webSocket, Response response) {
            webSocket.send("Hello...");
            webSocket.send("...World!");
            webSocket.send(ByteString.decodeHex("deadbeef"));
            webSocket.close(1000, "Goodbye, World!");
        }
    
        @Override
        public void onMessage(WebSocket webSocket, String text) {
            System.out.println("MESSAGE: " + text);
        }
    
        @Override
        public void onMessage(WebSocket webSocket, ByteString bytes) {
            System.out.println("MESSAGE: " + bytes.hex());
        }
    
        @Override
        public void onClosing(WebSocket webSocket, int code, String reason) {
            webSocket.close(1000, null);
            System.out.println("CLOSE: " + code + " " + reason);
        }
    
        @Override
        public void onFailure(WebSocket webSocket, Throwable t, Response response) {
            t.printStackTrace();
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  5
  •   Jesse Wilson    7 年前

    newWebSocket() 方法返回 WebSocket 可用于将出站消息排队的。

    推荐文章