1

私はsocket.ioを使用していますが、接続されたユーザーに対してのみサーバーからクライアントにイベントを発行したい場合は機能しません!

エラーも応答もありません:(

それは私のコードです

// Server.js
var server     = require('http').createServer(),
    io         = require('socket.io')(server),
    logger     = require('winston'),
    port       = 1337;

// Logger config
logger.remove(logger.transports.Console);
logger.add(logger.transports.Console, { colorize: true, timestamp: true });
logger.info('SocketIO > listening on port ' + port);

io.on('connection', function (socket){
    logger.info('SocketIO > Connected socket ' + socket.id);

    socket.on('ElephantIO.login', function (user){
        socket.emit('SocketIO.login', user);
    });

    socket.on('disconnect', function () {
        logger.info('SocketIO > Disconnected socket ' + socket.id);
    });
});

server.listen(port);
// Client.js
(function() {
    var socket = io.connect('http://localhost:1337');

    socket.on('SocketIO.login', function(user) {
        console.log(user);
        alert('SocketIO.login');
    });

})();

このイベントを他のすべての接続ユーザーに発行するように変更するsocket.emit('SocketIO.login', user);と、動作しますsocket.broadcast.emit('SocketIO.login', user);

このイベントをすべての接続ユーザーに発行するように変更するsocket.emit('SocketIO.login', user);と、同じ動作になりますio.emit('SocketIO.login', user);socket.broadcast.emit('SocketIO.login', user);

常に現在のユーザーウィンドウには応答もエラーもありません。

4

1 に答える 1

-1

Socket.io チャネルを使用して、接続時にユーザーをサブスクライブし、そのチャネルに送信してそのユーザーに移動してみてください。

チャネルにソケットを追加するには:socket.join("channel-name");

そのチャネルに送信するには:io.sockets.in("channel-name").emit("signin",data);

于 2015-07-04T17:12:47.860 に答える