Я использую пакет "socket.io-client": "^ 2.2.0"
В моем веб-приложении у меня есть следующий код при загрузке:
export const socket = io.connect(process.env.VUE_APP_SOCKET_URL, {
reconnection: true,
reconnectionDelay: 1000,
reconnectionDelayMax: 5000,
reconnectionAttempts: Infinity
})
Затем в цикле приложения у меня появляется следующий слушатель
import socket from './api/socket'
function handleAutobox() {
console.log('handling autobox')
}
console.log('Connect')
socket.on('autobox', handleAutobox)
При проверке в производственном процессе я вижу, что код запущен («Connect» зарегистрировано).Я вижу, что сетевой трафик сокета перехвачен:
Проблема в том, что функция handleAutobox
никогда не вызывается.Если я уверен, что запустил socket.on, как это возможно?
ОБНОВЛЕНИЕ: ДОБАВЛЕНИЕ КОДА СТОРОНЫ СЕРВЕРА:
let socket_io = require('socket.io'),
io;
let server = http.createServer(app)
.listen(app.get('port'), () => {
io = socket_io.listen(server);
console.info(`App listening on port ${port}!`);
});
// ...inside route function:
io.emit('autobox', autobox);
ОБНОВЛЕНИЕ: ADDING socket.on('connect' ...)
:
При добавлении socket.on('connect' ...)
непосредственно после создания сокета я обнаружил, что вызов также не вызывается.Вместо io.connect(...)
я попробовал предложение @ Keith io()
с отдельными io.on
событиями, но все еще без игры в кости.
Таким образом, реальная проблема заключается в том, что «соединение» не устанавливается, но данные по-прежнему отправляются по сети.Я думаю, что я действительно не понимаю что-то о сокетах.По-видимому, данные могут быть отправлены, даже если соединение не установлено?