首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Socket.IO 1.4.3文档中的示例出现错误

Socket.IO 1.4.3文档中的示例出现错误
EN

Stack Overflow用户
提问于 2014-07-05 21:09:21
回答 1查看 566关注 0票数 0

我一直在尝试从Socket.IO文档中执行这个简单的第一个示例,它似乎没有以我尝试过的任何方式工作。

这是我的代码:

代码语言:javascript
运行
复制
var io = require('socket.io');
io.listen(server);

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

以下是错误日志:

代码语言:javascript
运行
复制
/home/chetan/project/app.js:70
io.on('connection', function (socket) {
   ^
TypeError: Object function Server(srv, opts){
  if (!(this instanceof Server)) return new Server(srv, opts);
  if ('object' == typeof srv && !srv.listen) {
    opts = srv;
    srv = null;
  }
  opts = opts || {};
  this.nsps = {};
  this.path(opts.path || '/socket.io');
  this.serveClient(false !== opts.serveClient);
  this.adapter(opts.adapter || Adapter);
  this.origins(opts.origins || '*:*');
  this.sockets = this.of('/');
  if (srv) this.attach(srv, opts);
} has no method 'on'
    at Object.<anonymous> (/home/chetan/project/app.js:70:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

我一直盯着日志看了几分钟,但似乎不明白出了什么问题。

我甚至试着用这种方法:

代码语言:javascript
运行
复制
io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

它会产生以下错误:

代码语言:javascript
运行
复制
io.sockets.on('connection', function (socket) {
           ^
TypeError: Cannot call method 'on' of undefined
    at Object.<anonymous> (/home/chetan/project/app.js:70:12)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

你觉得可能有什么不对?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-05 21:25:43

只要稍微浏览一下网页就能解决这个问题。

我刚刚发现我所使用的设计模式与他们的不同。当socket.io侦听服务器时,它返回一个必须用于通信的对象。

下面是一段工作代码,例如:

代码语言:javascript
运行
复制
var io = require('socket.io');
var websocket = io.listen(server);

websocket.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

此外,您还可以使用以下方式在单独的文件中对websocket服务器的逻辑进行编码。假设文件名为websocketProcessor.js,下面是代码:

代码语言:javascript
运行
复制
var io = require('socket.io');
var websocket = io.listen(server);

require('./websocketProcessor')(websocket);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24590585

复制
相关文章

相似问题

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