Сервер веб-сокетов Node.js draft-ietf-hybi-thewebsocketprotocol-08 - PullRequest
0 голосов
/ 20 ноября 2011

Я использую этот код в своем проекте: https://github.com/ncr/node.ws.js/blob/master/ws.js

С Opera, Safari и FF он работает отлично, но с googlechrome он не работает, потому что chrome использует другой протокол (draft-ietf-hybi-thewebsocketprotocol-08)

Я не могу установить socket.io, поэтому мне нужно изменить этот код: https://github.com/ncr/node.ws.js/blob/master/ws.js

1 Ответ

0 голосов
/ 21 ноября 2011

Чтобы отправить рукопожатие, вам необходимо реализовать алгоритм, как он определен:

// request is a string containing the handshake request

var match = /^Sec-WebSocket-Key: (.*)$/.exec(request); // parse request key

if(!match) {
    // not a valid request
}

var crypto = require("crypto"),
    hash   = crypto.createHash("sha1"),
    add    = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";

hash.update(match[1] + add);

var key = hash.digest("base64"); // get response key

// build response
var response = "HTTP/1.1 101 Switching Protocols\r\n" +
               "Upgrade: websocket\r\n" +
               "Connection: Upgrade\r\n" +
               "Sec-WebSocket-Accept: " + key + "\r\n\r\n";

// send response now

Для отправки и получения сообщений см. этот вопрос вики .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...