Security 是否可以使用单向socket.io连接?

Security 是否可以使用单向socket.io连接?,security,socket.io,ddos,Security,Socket.io,Ddos,我的应用程序只需要socket.io就可以将数据从服务器发送到客户端。为了防止拒绝服务攻击,如果我试图发送数据,我想断开客户端的连接。这可能吗 我已经看了一些stackoverflow问题: 但是我还没有找到有效的解决方案。这里有一个选项可以缓存所有事件 然后在任何情况下,您都只需断开服务器端的客户端 var socket = io.connect(); var globalEvent = "*"; socket.$emit = function (name) { if(!this.$e

我的应用程序只需要socket.io就可以将数据从服务器发送到客户端。为了防止拒绝服务攻击,如果我试图发送数据,我想断开客户端的连接。这可能吗

我已经看了一些stackoverflow问题:


但是我还没有找到有效的解决方案。

这里有一个选项可以缓存所有事件

然后在任何情况下,您都只需断开服务器端的客户端

var socket = io.connect();
var globalEvent = "*";
socket.$emit = function (name) {
    if(!this.$events) return false;
    for(var i=0;i<2;++i){
        if(i==0 && name==globalEvent) continue;
        var args = Array.prototype.slice.call(arguments, 1-i);
        var handler = this.$events[i==0?name:globalEvent];
        if(!handler) handler = [];
        if ('function' == typeof handler) handler.apply(this, args);
        else if (io.util.isArray(handler)) {
            var listeners = handler.slice();
            for (var i=0, l=listeners.length; i<l; i++)
                listeners[i].apply(this, args);
        } else return false;
    }
    return true;
};
socket.on(globalEvent,function(event){
    //Force disconnect
    socket.disconnect();
});

这可能不是很有帮助,但我听说过最好的方法是。这是一种较旧的方法,很多人自己也不喜欢它,但它是一种单向服务器到客户端更新的选项

本质上,在客户端,您有一个连接到服务器的iframe,服务器以多部分响应的形式发回响应,偶尔会发回包含要执行的内容的脚本标记。因此,一个微不足道且可能被打破的例子是:

<!--index.html-->
<html>
  <body>
    <iframe src="/comet/status"></iframe>
  </body>
</html>
然后服务器代码

// server code (I like Node.JS)
app.get('/comet/status', function (req, res) {
  // A function that does a lot of work,
  //  and occasionally calls a callback with progress
  doWork(function (progress) {
    res.write('<script>console.log("Progress: " + progress);</script>');
  });
  res.end();
});

正如我所说,这是一个相当不完整的例子,但这是一种实现你所寻找的东西的方法,即使是以一种更古老的方式。您可能需要更新一个显示进度的元素,而不是控制台日志记录。

看看这个问题:SSE安全吗?它能防止拒绝服务吗?