首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取socket.io中未定义的属性'on‘

无法读取socket.io中未定义的属性'on‘
EN

Stack Overflow用户
提问于 2016-05-17 20:15:54
回答 1查看 7.6K关注 0票数 3

我收到这个错误(未定义的'on')。以下是我的服务器代码

代码语言:javascript
复制
        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);
       });

    });
EN

回答 1

Stack Overflow用户

发布于 2016-05-18 01:41:32

您必须更改您的客户端代码:

代码语言:javascript
复制
sock.on('EPSON',function(data)

代码语言:javascript
复制
socket.on('EPSON',function(data)

这是因为您假设connect客户端侦听器返回套接字:

代码语言:javascript
复制
socket.on('connect', function(sock)

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

我也不相信你如何在客户端创建套接字,也许这也是一个很好的解决方案,但我知道并使用:

代码语言:javascript
复制
var io = require('socket.io-client');
var socket = io('http://172.20.20.240:3000');

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

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

代码语言:javascript
复制
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);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37275929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档