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

时间:2017-10-27 10:44:59

标签: node.js sockets 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 个答案:

答案 0 :(得分:0)

客户端与客户端交互的步骤。 为简单起见,我使用自定义套接字事件名称作为“chat”

  1. 客户端发出“聊天”事件
  2. 服务器侦听'chat'事件并获取消息
  3. 服务器然后发出'chat'事件以发送消息
  4. 相应的客户端会收听“聊天”并收到消息
  5. 每条消息都通过您的服务器。因此您可以限制任何客户端与客户端的交互。

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

    使用符合上述模式的新代码替换套接字代码