SocketIO - 在广播之前处理数据

时间:2014-11-26 18:10:37

标签: node.js socket.io

我目前遇到一个小型Node.JS应用程序的问题。它与Socket.IO示例聊天应用程序非常相似:每当用户向服务器发送数据时,我都需要处理数据然后将其广播给所有用户。但是,处理数据的方式取决于接收数据的用户。我试图改变每个套接字的Socket#emit方法(为了在发送之前处理数据),但是广播没有使用它。有什么方法可以解决这个问题吗?

提前致谢。


修改

这是我尝试过的():

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

io.use(function(socket, next) {
    var old_emit = socket.emit;

    socket.emit = function() {
        // do something with the data (arguments[1] in this case)
        // the processing of the data depends on a value that is
        // unique to each connection, and can't be sent over to the client

        old_emit.apply(socket, arguments);
    }
});

我尝试了上面的代码,因为我最初认为广播会在每个连接的其他地方调用emit

1 个答案:

答案 0 :(得分:0)

我不确定你想做什么 没有任何“io()”之类的功能。你做错了。

BTW,处理数据。 从示例聊天应用程序

// when the client emits 'new message', this listens and executes
socket.on('new message', function (data) {

 //call a function which you want to process data
 var newData = messageProcessingFunc(data);
//and then broadcast it.

 // we tell the client to execute 'new message'
 socket.broadcast.emit('new message', {
    username: socket.username,
    message: newData 
    });
});