gpt4 book ai didi

html - Chrome 16 网络套接字 hybi-17

转载 作者:搜寻专家 更新时间:2023-11-01 00:34:19 26 4
gpt4 key购买 nike

我正在尝试让套接字与使用最新协议(protocol)的 Chrome 16 一起工作: https://datatracker.ietf.org/doc/html/draft-ietf-hybi-thewebsocketprotocol-17

服务器正在使用 node.js,代码如下:

var http = require('http'), net = require('net'), crypto = require('crypto');

var server = http.createServer(function (req, res) {
console.log(req);
});

server.on('connection', function (stream) {
stream.setEncoding('utf8');
stream.setTimeout(0);
stream.setNoDelay(true);
stream.on('data', function (data) {
console.log(data);
console.log("****Incoming****\r\n" + data);
var securyPattern = /Sec-WebSocket-Key: (.*)/g;
var key = securyPattern.exec(data);
var magic = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
var sha1 = crypto.createHash('sha1');
sha1.update(key[1] + magic);
var accept = sha1.digest('base64');
var response = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: " + accept;

stream.write(response);
console.log("****Outgoing****\r\n" + response);
});
});

server.listen(1337, 'xxxxxxx.no-ip.info');

no-ip.info 是我的 IP,我正在为我的网络服务器使用该地址,它工作正常。

头部脚本标签内的浏览器(客户端)代码:

window.onload = function () {
var myWebSocket = new WebSocket("ws://xxxxxxx.no-ip.info:1337/");

myWebSocket.onopen = function(evt) {
alert("open");
console.log("WebSockets connection opened");
myWebSocket.send("a test message");
};

myWebSocket.onmessage = function(evt) {
console.log("Got WebSockets message: " + e.data);
};

myWebSocket.onclose = function(evt) {
console.log("WebSockets connection closed");
};
};

永远不会触发 onopen 函数,我在 stackoverflow 上找到了大部分代码,但进行了更改以便它可以使用最新的协议(protocol),有人知道代码有什么问题吗? (当我连接时,它确实在 CMD 中打印发送给它的数据,但在 Chrome 控制台中它只是说关闭连接(从不打开)。

最佳答案

我不知道 node.js,所以它可能会为你做这个但是......

您的回复不应该以\r\n\r\n 结尾吗?至少看起来您的接受 header 缺少\r\n...

关于html - Chrome 16 网络套接字 hybi-17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8156626/

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