When trying to manually upgrade connection using code:
server.on('upgrade', function(request, socket, head){
wss.handleUpgrade(request, socket, head, function(websocket){
console.log("new websocket");
});
});
server crashes with error
const http = require('http');
const ws = require('ws');
var port;
port = 3311;
var server = http.createServer();
var wss = new ws.Server({
server: server,
noServer: true
});
server.on('upgrade', function(request, socket, head){
wss.handleUpgrade(request, socket, head, function(websocket){
console.log("new websocket");
});
});
server.listen(port);
2.
run client with script
var socket = new WebSocket('ws://localhost:3311')
No crash connection established
server crashes with this error when firefox clients connects:
websocket.readyState = WebSocket.CLOSING;
^
TypeError: Cannot set property 'readyState' of undefined
at Socket.socketOnClose (/home/bartek/Projekty/ehelon/discovery/node_modules/ws/lib/websocket.js:829:24)
at Socket.emit (events.js:202:15)
at TCP._handle.close (net.js:611:12)
and with this when chrome is connecting
events.js:173
throw er; // Unhandled 'error' event
^
Error [ERR_STREAM_WRITE_AFTER_END]: write after end
at writeAfterEnd (_stream_writable.js:248:12)
at Receiver.Writable.write (_stream_writable.js:296:5)
at Socket.socketOnData (/home/bartek/Projekty/ehelon/discovery/node_modules/ws/lib/websocket.js:867:35)
at Socket.emit (events.js:202:15)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:145:17)
Emitted 'error' event at:
at Receiver.receiverOnError (/home/bartek/Projekty/ehelon/discovery/node_modules/ws/lib/websocket.js:772:13)
at Receiver.emit (events.js:197:13)
at errorOrDestroy (internal/streams/destroy.js:98:12)
at writeAfterEnd (_stream_writable.js:250:3)
at Receiver.Writable.write (_stream_writable.js:296:5)
[... lines matching original stack trace ...]
at Socket.Readable.push (_stream_readable.js:224:10)
var wss = new ws.Server({
server: server,
noServer: true
});
This is wrong. Use only noServer.
Thank it worked! :smiley:
```js var wss = new ws.Server({ server: server, noServer: true });This is wrong. Use only noServer.
```
Love you. Do you think it is secure for production servers?
I use nginx for websockets.
Most helpful comment
This is wrong. Use only
noServer.