不能从套接字连接之外定义的方法发出

我试图使用自定义对象的方法发送到套接字连接。 该对象在套接字连接之外定义,但是在其内部被实例化。 代码和错误如下。

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:套接字未定义

你可以通过socketReport像这样:

 io.sockets.on('connection', function (socket) { report = new Report(socket); socket.on('dataChange', function(newData) { report.update(newData); }); }); function Report (socket) { this.update = function (data) { socket.emit('updateReport', { data: data }); } } 

这样, socket可以在Report访问。

但是,您使用report作为连接处理程序不是本地的variables。 你确定你没有覆盖连接的report ? 看来你宁愿每个连接报告。 在这种情况下,请在report分配前添加var