Как вы обрабатываете базовый фрейм Websocket

Я пишу свою собственную реализацию для веб-сокетов вместо socket.io и тому подобного.

У меня хорошее рукопожатие, но когда клиент отправляет на сервер, я могуНе могу понять, как превратить эти данные во что-нибудь полезное. Это объект? Это строка? Документы говорят, что это массив необработанных областей памяти вне кучи V8. ...?

ПРИМЕР ФУНКЦИОНИРОВАНИЯ (клиент является жестко закодированной строкой)

var http = require("http");
var crypto = require("crypto");
var server = http.createServer();
server.on("upgrade", function (req, socket, upgradeHead) {
    var crypto = require("crypto");
    var shasum = crypto.createHash("sha1");
    shasum.update(req.headers["sec-websocket-key"]);
    shasum.update("258EAFA5-E914-47DA-95CA-C5AB0DC85B11");
    var hash = shasum.digest("hex");
    var myVal = new Buffer(hash, "hex").toString('base64');

    var head = "";
    head += "HTTP/1.1 101 Switching Protocols\r\n";
    head += "Connection: Upgrade\r\n";
    head += "Upgrade: WebSocket\r\n";
    head += "Sec-WebSocket-Accept: " + myVal + "\r\n\r\n";

    socket.setEncoding("utf8");
    socket.write(head);

    socket.ondata = function (data, start, end) {
        var data = data.toString("utf8", start, end);
        console.log(" start: " + start + "\n end: " + end + "\n data: " + data);
    };
});
server.on("request", function (req, res) {
    if (req.url === "/e")
        process.exit();
    if (req.url.indexOf("favicon") !== -1)
        return;

    var html = "\
                \r\n\
                \r\n\
                    \r\n\
                        \r\n\
                            var connection = new WebSocket('ws:localhost:80');\r\n\
                            connection.onopen = function () {\r\n\
                                console.log('OPEN SUCCESS');\r\n\
                                connection.send('I am a message from the client.');\r\n\
                            };\
                            connection.onmessage = function(msg) {\r\n\
                                console.log(msg);\r\n\
                            }\r\n\
                            connection.onerror = function (e) { console.log('ERROR'); console.log(e); };\r\n\
                            connection.onclose = function (e) { console.log('CLOSE'); console.log(e);};\r\n\
                        \r\n\
                    \r\n\
                ";
    res.writeHead(200, { "Content-Type": "text/html" });
    res.write(html);
    res.end();
});
server.listen(80);

узел документов - socket.on (data, myFunc);

Документы узла - Буферный объект

Учебник я использую

Подробная документация по WebSocket

Eazy-Peezy Wikipedia Рукопожатие объяснение

Ответы на вопрос(1)

Ваш ответ на вопрос