2013-12-16 118 views
7

我是SailsJs和Socket IO的新手。我想在Sailsjs中執行下面的Socket IO示例。在服務器端,我需要執行下面的代碼。但我不知道在哪裏放置這段代碼。

Sailsjs Socket IO

 
var io = require('socket.io').listen(80);

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


我知道我可以把它放在Cntroller的函數中,但它會爲每個不需要的請求添加監聽器。

客戶端:

 


    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 

告訴我在哪裏放置服務器端代碼sailsjs幫我執行上述socketIO例子。

+3

的sails.js實施路線*通過*的express.js接口實際上所有的socket.io請求。看看[這裏](http://sailsjs.org/#!documentation/sockets)閱讀關於如何使用Sails實現套接字;雖然它們也支持本地Socket.io控件,但這可能不是最好的開始。 – brandonscript

+0

@ r3mus我同意。我只需要知道在sailsjs中運行這個Native SOCKET.IO服務器代碼的位置。感謝您的回覆。讚賞。 – Dinesh

+1

我會通過並建立一個基本的風帆項目,並通過代碼看看插座配置在哪裏; TBH我還沒有用Sails做過任何非標準的套接字。 – brandonscript

回答

6

那麼,你的代碼是建議你想要做些什麼connection

有一個文件位於/config/sockets.js內置的函數爲connectdisconnect,也許你正在尋找這個。

如果你沒有,那麼你會希望把它變成一個控制器「行動」,如果你認爲更深入地瞭解你正在努力實現那麼你可能會需要你再次呼籲處理這個動作爲你。

如果你最終想出來的sockets.js文件,那麼你應該有一些看起來像這樣

​​
+0

如果你有很多socket.on函數要放在裏面呢?在onConnect裏面會有很多代碼會減慢每個套接字的連接?有沒有其他地方可以放入這些代碼? (但不是控制器)是否可以將此代碼放入sockets.js中,但OnConnect之外? – jantar

+0

@jantar據我所知,你必須在connect函數內部擁有每一個「socket.on」函數,沒有別的辦法可以做到,即使沒有sails.js – iConnor

+0

@iConnor,你可以看看這個問題 ? http://stackoverflow.com/questions/37129766/how-to-use-sails-io-js-version-0-11-3-in-node-server –