0

チャット アプリケーションを作成中ですが、問題が発生しました。メッセージを送信すると、そのメッセージはデータベースに保存され、チャネルを介して送信され、現在ページにいるすべての人が受け取ることができます。私が抱えている問題は、メッセージが保存されて送信されますが、送信者以外には受信されないことです。

これが私のサーバーソケットコードです:

var server = http.createServer( app ).listen( app.get( 'port' ) ),
    io = require( 'socket.io' ).listen( server );

//This is where we will listen and emit messages
io.sockets.on( 'connection', function( socket ) {
    console.log( 'Socket IO connected' );

    socket.on( 'send', function( data ) {

        console.log( data );

        var chat_model = require( './models/chat_model' );
        chat_model.add( data, send_through_channel );

        function send_through_channel( data ) {
            console.log( data );
            socket.emit( 'chat', data[0] );
        }
    });
});

これが私のクライアント側のsocket.ioコードです:

define( [ 'Backbone', '/socket.io/socket.io.js' ], function() {

    return Backbone.View.extend({

        socket: io.connect( 'http://192.168.0.38:3000' ),

        initialize: function() {

            //Fade out the success message
            $( '.js-success-float' ).fadeOut( 2000 );

            //Listen for new messages
            this.socket.on( 'chat', _.bind( function( data ) {
                console.log( data );
                this.append_message( data );
            }, this ) );
        }
    //More unrelated stuff below

チャットを表示している他のユーザーではなく、メッセージを送信した人だけがメッセージを受信する理由について、誰かが私を正しい方向に向けることができるかどうか疑問に思いました.

前もって感謝します。

4

2 に答える 2

0

問題はここにあります:

socket.emit( 'チャット', データ[0] );

受信したソケットにデータを送信しています。あなたの場合、次を使用する必要があります:

io.emit( 'チャット', データ[0] );

また

io.sockets.emit( 'チャット', データ[0] );

全員に送信する、または :

socket.broadcast.emit( 'チャット', データ[0] );

送信者以外の全員に送信します。

于 2013-10-10T16:19:10.140 に答える