Я думаю, что вы путаете события. «открыть», «веб-сокет», «закрыть» - все они относятся к жизненному циклу соединения. Вы не получите там информацию.
С другой стороны, «сообщение» предназначено для получения информации.
На сервере отсутствует событие сообщения:
websocket.on('message', function (msg) {
console.log('test')
})
РЕДАКТИРОВАТЬ: отвечая на расширенный вопрос в комментариях. По сути, вы хотите создать протокол поверх библиотеки websocket, чтобы включить аутентификацию или другие. Если вы хотите реализовать это самостоятельно, вам следует добавить сообщения другого типа. Скажите:
websocket.on('mmessage', function (msg) {
try {
// JSON parse must always be try catch, since string might not be a json and async errors are really bad
const data = JSON.parse(msg.toString())
if (!('type' in data')) {
// We require type in property, probably go on the error route
throw new Error(...)
}
const type = data.type
if (type === AUTH) {
/// ....
} else if (type == MSG) {
const token = data.token
// check token, which is required in every message
}
} catch (e) {
// TODO log and probably return feedback to the client
}
})
На клиенте вы бы сделали что-то подобное:
ws.once('open', () => {
ws.send(JSON.stringify({type: AUTH, data: {pass: '1234', user: 'TEST'}}))
})
Если вы используете оболочку поверх веб-сокета, тогда у вас будет более простой код. Я думаю, что с socket.io, например, вы можете отправить объект, и он будет вами преобразован в строку