我目前遇到一个小型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
。
答案 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
});
});