阻止客户端 socket.io 发送消息



我想知道如何防止连接的客户端入侵代码并发送消息。

NodeJS服务器代码:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http ,{serveClient: false});
var port = process.env.PORT || 3000;
var request = require("request")
var url = "http://localhost/api/index.php";
events = require('events'),
    serverEmitter = new events.EventEmitter();
app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){

    request({
        url: url,
        json: true
    }, function (error, response, body) {
        if (!error && response.statusCode === 200) {
            io.emit('chat message', body);
        }
    });

});

http.listen(port, function(){
    console.log('listening on *:' + port);
});

我正在使用 webSocket 让用户了解最新的货币价格。我想阻止用户向其他客户端发送数据。

客户端

到客户端交互中涉及的步骤。为简单起见,我使用自定义套接字事件名称作为"聊天"

  1. 客户端发出事件"聊天"
  2. 服务器侦听"聊天"事件并获取消息
  3. 然后服务器发出"聊天"事件来发送消息
  4. 相应的客户端侦听"聊天"并接收消息

每条消息都通过您的服务器。因此,您可以限制任何客户端到客户端的交互。


此外,每次新客户端连接时,socket.io(写在问题中)都会向所有连接的客户端发送货币价格。相反,当客户端通过请求连接时GET发送价格。然后在价格更新时发送更新的价格。

将套接字代码替换为遵循上述模式的新代码

最新更新