无法读取socket.io中未定义的属性

我得到这个错误(未定义'上')。 这是我的服务器代码

var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.send('Hello'); }); io.on('connection', function(socket){ console.log('a user connected'); io.emit('EPSON', {'name':'Lalit'}); console.log("Event Emitted successfully"); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); Here is my client code: var io = require('socket.io-client'); //var socket = io.connect('http://printserverproject-happylaundry.rhcloud.com:8000'); var socket = io.connect('http://172.20.20.240:3000'); socket.on('connect', function(sock) { console.log('Connected!'); sock.on('EPSON',function(data) { console.log(data); }); }); 

当我正在运行代码连接完成,但在客户端发生错误。

你必须改变你的客户代码:

 sock.on('EPSON',function(data) 

 socket.on('EPSON',function(data) 

这是因为你认为客户端监听器连接返回套接字:

 socket.on('connect', function(sock) 

但它不会返回任何东西。 您必须将事件侦听器绑定到socket 。 这在服务器端是不同的,因为在前端你有一个客户端套接字,但是在后台你有所有的客户端套接字。

我也不信服你如何在客户端创build套接字,也许这也是很好的解决scheme,但我知道和使用:

 var io = require('socket.io-client'); var socket = io('http://172.20.20.240:3000'); 

也许这是因为你使用旧版本?

总之,您的客户端代码可能如下所示:

 var io = require('socket.io-client'); var socket = io('http://172.20.20.240:3000'); socket.on('connect', function(sock) { console.log('Connected!'); }); socket.on('EPSON',function(data) { console.log(data); });