gpt4 book ai didi

javascript - WebSockets 握手不起作用

转载 作者:行者123 更新时间:2023-12-02 19:40:20 26 4
gpt4 key购买 nike

我试图在 JavaScript WebSocket 和用 VisualBasic .Net 编写的 TCP 服务器/客户端应用程序之间建立连接。我的问题是握手失败。我确实从本地网站收到了握手请求,但它不接受我的响应。

JavaScript文件的代码:

<script type="text/javascript">
var ws;
function connect() {
if("WebSocket" in window) {
debugger;
ws = new WebSocket("ws://192.168.193.178:1925");

ws.onopen = function() {
alert("Connection established");
};
ws.onmessage = function(evt) {
var received_msg = evt.data;
alert("Message is received: " + received_msg);
};
ws.onerror = function(evt) {
alert("Error");
var received_msg = evt.data;
alert("Error: " + received_msg);
};
ws.onclose = function() {
// websocket is closed.
alert("Connection closed");
};

//ws.send("Test");
//ws.close();
} else {
alert("WebSocket NOT supported by your Browser!");
}
}
function disconnect() {
ws.close();
}
function send(message) {
ws.send(message);
alert("Sent: " + message);
}

</script>

VB.Net 代码输出:

Received:
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 192.168.193.178:1925
Origin: http://127.0.0.1:8020
Sec-WebSocket-Key: eGzO0afUD5jCeUdzdoxwjw==
Sec-WebSocket-Version: 13

Sent:
HTTP/1.1 101 Web Socket Protocol Handshake\r\n
Upgrade: WebSocket\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Origin: null\r\n
Sec-WebSocket-Accept: NzU3M2IwYzk0ZWFmYjg4MzMyZWI1ODhhZWI4NWUyZDE1YWU2YzhlNA==\r\n
\r\n

我只是无法让 WebSocket 接受握手,我希望任何人都可以帮助我。也许哈希生成包含错误?

编辑:

我现在得到了正确的 Sec-WebSocket-Accept 字符串 (dXOwyU6vuIMy61iK64Xi0VrmyOQ=),无论如何,WebSocket 似乎无法处理握手响应。我尝试使用 Chrome 开发者工具对其进行调试,但我没有从中获得有用的信息。有什么建议吗?

最佳答案

有一件事立即凸显出来。服务器响应中的 Sec-WebSocket-Accept 值比正确值长得多。事实上,该 key 的正确值应该是“dXOwyU6vuIMy61iK64Xi0VrmyOQ=”。我的猜测是您正在对 SHA1 结果的字符串表示进行 Base-64 编码。编码应在 SHA1 结果的字节表示上完成。

关于javascript - WebSockets 握手不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10464714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com