Я, должно быть, упускаю что-то чрезвычайно очевидное, но не могу правильно выполнить эту работу.
Рукопожатие идет правильно, но как только я отправляю часть данных, я не получаю правильные данные на сервере.
Сервер:
stream.on("data", function(data) {
if(!handshake) return doHandshake(); // no problems with handshake
console.log(data);
});
Клиент:
ws = new WebSocket("ws://localhost:12345");
ws.onopen = function() {
ws.send(String.fromCharCode(parseInt("89", 16)));
}
Что я вижу в консоли node.js:
<Buffer 81 82 ed 68 ae 67 2f e1>
Значит, ключи ed 68 ae 67
, а закодированные данные - 2f e1
. При использовании xor-декодирования декодированные данные выглядят как c2 89
. c2
был получен по неизвестной причине - 89
правильный.
Странные вещи случаются и с другими персонажами:
ws.send(String.fromCharCode(parseInt("ab", 16)));
Я получаю:
<Buffer 81 82 ff 8e 45 34 3d 25>
Декодированные данные c2 ab
вместо ab
.
Я использую новый формат кадрирования (Chrome 15) и версию узла для Windows (node.exe
).
- Что здесь не так?
- Можно ли посмотреть, что отправляет Chrome, чтобы увидеть, в чем проблема?