1

我已经成功完成了我的 websocket 测试,但我想了解 Websocket 握手。在我的网络客户端中,我使用以下代码启动 websocket 通信

var ws = new WebSocket("ws://example.com/foobar");
ws.onmessage = function(evt) { /* some code */ }
ws.send("Hello World")

在我的 Web 服务器(使用 Java)中,我使用了 Jetty lib 并实现了如下服务器:

public class MyWebSocket implements WebSocket.OnTextMessage {
    public void onOpen(Connection connection)
    {
    }

    public void onMessage(byte frame, byte[] data,int offset, int length)
    {
    }

    public void onMessage(String data)
    {
    }

    public void onClose(int code, String message)
    {

    }
}

Web 套接字通信对我来说工作正常,我没有为握手做任何事情。它是如何工作的?

4

1 回答 1

0

如果你使用像 Jetty 这样的库,像握手这样的重复性事情是在幕后完成的,这样你就不必关心这些了。这就是使用库的想法——您可以编写直接的代码,而无需重新发明轮子。

如果您确实想自己实现握手,您可能想在没有库的情况下摆弄,并尝试如何“勉强”实现它。

对于 Jetty,你可以在这里查看握手代码,密钥解析在这里完成。

于 2011-10-19T12:10:45.117 回答