Ws: Invalid WebSocket frame

Created on 4 Mar 2018  路  3Comments  路  Source: websockets/ws

const WebSocket = require('ws');
const express = require('express');
const bodyParser = require('body-parser');
const url = require('url');
const http = require('http');
const app = express();
app.use(bodyParser.urlencoded({
    extended: true,
}));
app.use(bodyParser.json());

const server = http.createServer(app);
server.listen(2015,'127.0.0.1');
const wsScreen = new WebSocket.Server({ server });
wsScreen.on('connection', (ws, request) => {
    ws.send("HI BIG SCREEN");
});

const wsClient = new WebSocket.Server({ server });
wsClient.on('connection', (ws, request) => {
     ws.send("HI CLIENT");
});
server.on('upgrade', (request, socket, head) => {
    const { pathname } = url.parse(request.url);

    console.log('PATHNAME', pathname);
    if (pathname === '/client') {
        wsClient.handleUpgrade(request, socket, head, (ws) => {
            console.log('New Client connection');
            wsClient.emit('connection', ws, request);
        });
    } else if (pathname === '/screen') {
        wsScreen.handleUpgrade(request, socket, head, (ws) => {
            wsScreen.emit('connection', ws, request);
        });
    } else {
        socket.destroy();
    }
});

Description

I'have a problem whit multi socket
I'have see issue 885

when try to connect to "ws://localhost:2015/screen"

node error :
RangeError: Invalid WebSocket frame

browser(chome) error
WebSocket connection to 'ws://localhost:2015/screen' failed: Invalid frame header

version:
Node.js version(s): 9.4.0
OS version(s): MacOs

All 3 comments

Replace const wsScreen = new WebSocket.Server({ server }); with const wsScreen = new WebSocket.Server({ noServer: true }) and similarly for the other server.

Thanks It work

Getting same error . Any idea .

[root@webrtc callback]# node server.js
got connection
events.js:292
throw er; // Unhandled 'error' event
^

RangeError: Invalid WebSocket frame: MASK must be set
at Receiver.getInfo (/usr/local/node_programs/callback/node_modules/ws/lib/receiver.js:234:16)
at Receiver.startLoop (/usr/local/node_programs/callback/node_modules/ws/lib/receiver.js:130:22)
at Receiver._write (/usr/local/node_programs/callback/node_modules/ws/lib/receiver.js:77:10)
at doWrite (_stream_writable.js:403:12)
at writeOrBuffer (_stream_writable.js:387:5)
at Receiver.Writable.write (_stream_writable.js:318:11)
at Socket.socketOnData (/usr/local/node_programs/callback/node_modules/ws/lib/websocket.js:875:35)
at Socket.emit (events.js:315:20)
at addChunk (_stream_readable.js:295:12)
at readableAddChunk (_stream_readable.js:271:9)
Emitted 'error' event on WebSocket instance at:
at Receiver.receiverOnError (/usr/local/node_programs/callback/node_modules/ws/lib/websocket.js:780:13)
at Receiver.emit (events.js:315:20)
at errorOrDestroy (internal/streams/destroy.js:108:12)
at onwriteError (_stream_writable.js:418:5)
at onwrite (_stream_writable.js:445:5)
at Receiver.startLoop (/usr/local/node_programs/callback/node_modules/ws/lib/receiver.js:151:5)
at Receiver._write (/usr/local/node_programs/callback/node_modules/ws/lib/receiver.js:77:10)
[... lines matching original stack trace ...]
at Receiver.Writable.write (_stream_writable.js:318:11) {
}
[root@webrtc callback]# cat server.js

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });
var fs = require('fs');
var wstream = fs.createWriteStream('audio.raw');

wss.on('connection', function connection(ws) {
console.log("got connection ");

ws.on('message', function incoming(message) {
console.log('received frame..');
wstream.write(message);
});
});

Was this page helpful?
0 / 5 - 0 ratings