Я пытаюсь использовать метод настраиваемого объекта, чтобы испускать соединение сокета. Объект определяется вне соединения сокета, но затем создается внутри него. Далее следует код и ошибка.Невозможно испускать метод, определенный за пределами соединения сокета
app.js
...
io.sockets.on('connection', function (socket) {
report = new Report();
socket.on('dataChange', function(newData) {
report.update(newData);
});
});
function Report() {
this.update = function (data) {
socket.emit('updateReport', { data: data });
}
}
Ошибка
Узел дает мне следующую ошибку.
socket.emit('updateReport', { data: data });
^ReferenceError: socket is not defined
Это именно то, что мне нужно, и теперь я понимаю, как этот шаблон должен работать. Кроме того, вторая часть вашего вопроса определенно спасла головную боль в будущем. – Travis
можете ли вы поставить «socket.on» в функцию «Отчет»? Будет ли выполняться обратный вызов при запуске события? –
@ The Hawk: Да, вы можете. Но вместо 'report' вам нужно будет определить' var instance = this; 'в' Report', а затем получить доступ к 'instance' обработчику' dataChange'. – pimvdb