10

I have the following nodejs web socket server

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(8000);

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });


});

console.log("Listening on 8000");

When trying to connect using wscat

wscat -c ws://localhost:8000/

I get the following error

error: Error: socket hang up

It works just fine in browser with the following javascript

var socket = io.connect('http://localhost:8000');
socket.on('news', function (data) {
  console.log(data);
  socket.emit('my other event', { my: 'data' });
});

Help is appreciated!

Khanh Nguyen
  • 11,112
  • 10
  • 52
  • 65

1 Answers1

20

I suggest that you try connecting to endpoint while specifying transport protocol. Like this:

wscat -c ws://localhost:3000/socket.io/\?transport=websocket

This works for my case.

Oto Brglez
  • 4,113
  • 1
  • 26
  • 33
  • 1
    If the last line of output is `< 40`, `"event-name"` event with `"new message"` message can be emitted with the following command `> 42["event-name","new message"]` – Željko Šević Apr 11 '20 at 00:59