2013-12-16 17 views
7

私はSailsJsとソケットIOを初めて使用しています。私はSailsjsで以下のソケットIOの例を実行したい。サーバー側では、次のコードを実行する必要があります。しかし、私はこのコードをどこに置くべきかわかりません。

Sailsjsソケット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実装ルートを探します何かを持っている必要がありますsockets.jsファイルを試し終わる場合。 Sailsでソケットを実装する方法については、[こちら](http://sailsjs.org/#!documentation/sockets)をご覧ください。彼らはネイティブのSocket.ioコントロールもサポートしていますが、これはおそらく開始するのに最適な場所ではありません。 – brandonscript

+0

@ r3mus同意します。私はsailsjs内でこのネイティブSOCKET.IOサーバーコードをどこで実行するかを知る必要があります。お返事をありがとうございます。感謝。 – Dinesh

+1

私は基本的なセイルプロジェクトを構築し、コードを調べてソケットがどこに設定されているか確認します。 TBH私は実際にセイルで非標準のソケットを作っていません。 – brandonscript

答えて

6

あなたのコードでは、connectionで何かしたいことが示唆されています。

connectdisconnectの組み込み関数を持つファイルが/config/sockets.jsにありますが、おそらくこれを探しています。

あなた、そしてあなたは、コントローラ「アクション」にそれを置くことになるでしょうでない場合、あなたはあなたが達成しようとしているかについてより深く考えるならば、あなたはおそらく、あなたがこれを処理するために、一度呼び出して、アクションが必要になりますあなたのために。

あなたは、あなたがそのsocket.io要求のすべて*実際に* express.jsインターフェイスを介してこの

​​
+0

内部に入れたいsocket.on関数がたくさんある場合はどうすればいいですか? onConnectの中にたくさんのコードがあると、すべてのソケット接続が遅くなりますか?このコードを入れる他の場所はありますか? (コントローラではなく)このコードは、たとえばsockets.jsに入れてOnConnectの外に置くことは可能ですか? – jantar

+0

@jantar私が知っている限り、あなたは接続関数の中であらゆる "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 –

関連する問題