1

Sails MVC を使用して、単純なソケット io ベースのチャット アプリを開発しようとしています。クライアントがソケットに接続したときはいつでも、複数回 (クライアントの数に等しい) を発行します。これが私のコードです。

サーバー:

io=req.socket.manager;
var users=[];

io.sockets.on('connection', function(client) {
    console.log("connected");

    users.push(client.id);
    client.on("chat", function(data) {
        io.sockets.sockets[data.to].emit("chat", { from: client.id, to: data.to, msg: data.msg });
        client.emit("chat", { from: client.id, to: data.to, msg: data.msg });
    });
});

クライアント :

var socket=new io.connect('http://localhost:1337/');
socket.request('/Chat/index');
socket.emit('connection',function(data){
    console.log(data);
});
socket.on('connect', function() {
    console.log("Connected.");
    //
});
socket.on('chat', function(data) {
    console.log(data.msg );
});

私を助けてください、セイルで実際のソケットオブジェクトを取得する方法はありますか? 私は io=req.socket.manager; を使用しています。これはreqオブジェクトです。

4

2 に答える 2

0

多分あなたはユニークに答えたいsocket idですか?これは次の方法で実現できます。

ファイル内sockets.jsconfigフォルダーで、onConnectプロパティを見つけて、次のようなコードを追加します。

onConnect: function(session, socket){

    sails.io.sockets.socket(socket.id).send('YOUR_EVENT', {'message' : 'your message to a unique socket'}); 
    }

新しい接続が確立されると、一意のメッセージが送信されます。いくつかのメモ:

  • メソッド .socket(socket.id) は socket.io の一部であるため、これはセイルの問題ではなく、socket.io の問題と見なすことができます。
  • これは、sails v0.9.8 でテストされました。他のバージョンでは、ファイル sockets.js が、sails のnewコマンドで生成されたデフォルトのアプリに含まれていない可能性があります。
  • これは、どのように実行できるかを示すための単なる例であり、ニーズに合わせて調整する必要がある場合があります。

お役に立てれば。

于 2014-01-16T15:51:08.820 に答える
0

ソケット オブジェクトは、サーバー側の Sails.io でアクセスできる必要があります。

リンク

于 2013-08-28T12:53:13.783 に答える