我一直在尝试从Socket.IO文档中执行这个简单的第一个例子,这个例子似乎没有用到我试过的任何方式。
这是我的代码:
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);
});
});
以下是错误日志:
/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
我一直盯着日志几分钟,但似乎无法理解什么是错的。
我甚至尝试过这样使用它:
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
会产生以下错误:
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
您认为可能出错?
答案 0 :(得分:0)
通过浏览网页解决了这个问题。
我只是发现我使用的设计模式与他们不同。当socket.io监听服务器时,它返回一个必须用于通信的对象。
以下是一段代码:
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,这里是代码:
var io = require('socket.io');
var websocket = io.listen(server);
require('./websocketProcessor')(websocket);