2014-07-05 27 views
0

我一直在嘗試從Socket.IO文檔執行這個簡單的第一個示例,它似乎沒有以我嘗試過的任何方式工作。來自Socket.IO 1.4.3文檔的示例給出了錯誤

這裏是我的代碼:

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

剛剛通過瀏覽網頁解決了這個問題。

我剛纔發現我使用的設計模式與他們的不同。當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);