如何将活动的WebSocket传递到Node.js中的群集线程?

雅各布·菲舍尔

在Node.js中,它们提供了一种通过以下方式将net.Sockets传递给子进程(cluster.Worker)的便捷方法:

var socket; // some instance of net.Socket
var worker = process.fork();
worker.on("online", function() {
    worker.send("socket", socket);
});

超级酷,可以轻松使用。但是我该如何使用WebSocket连接呢?我愿意尝试任何模块。


目前,我已经尝试使用ws等各种模块他们中的大多数人都存储了初始的net.Socket HTTP请求,然后对其进行升级,但是似乎没有一个简单的方法可以将其作为net.Socket传递给子进程,因为据我所知,它们需要WebSocket规范所需的大量握手信息。告诉。

我知道有一些棘手的解决方案,例如在子进程上的唯一端口上打开WebSocket服务器,然后告诉WebScoket连接在该端口上重新连接,但随后我需要为每个子线程打开一个端口。或者,通过process.send将所有数据通过管道传递到WebSocket连接,以便主线程执行所有io,但这通过在多个线程上运行内容而失去了一些性能优势。

那么有人有什么想法吗?

雅各布·菲舍尔

韦尔夫我想通了。对于我的预期目的,ws可能太多了。取而代之的是,我找到了一个晦涩难懂的WebSocket库,即lark-websocket,它公开了一个函数,该函数net.Socket可以将其包装在Client类中并作为WebSocket使用。唯一的问题是父线程和子线程都将随后尝试在另一端执行ping操作,因此我不得不派生它,并为父线程添加一种方法来暂停ping操作。

这是一些有兴趣的人的示例代码:

var cluster = require("cluster");
var ws = require('lark-websocket');

if(cluster.isMaster) { // make a child process and pipe all ws connections to it
    var worker = cluster.fork();

    worker.once("online", function() {
        console.log("worker online with pid", worker.process.pid);
    })

    ws.createServer(function(client, request){
        worker.send("socket", client._socket); // send all websocket clients to the worker thread
    }).listen(27015);
}
else { // we are a worker, so we handle the ws connections
    process.on("message", function(message, handler) {
        if(message === "socket") { // Note: Node js can only send sockets via handler if message === "socket", because passing sockets between threads is sketchy as fuck
            var client = ws.createClient(handler);

            client.on('message',function(msg){
                console.log("worker " + process.pid + " got:", msg);
                client.send("I got your: " + msg);
            });
        }
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js:如何将参数的值从终端传递到JS脚本

来自分类Dev

Angular:如何将$ scope变量传递到Node.js服务器。

来自分类Dev

Node.js:如何将JS变量的值从脚本传递到终端?

来自分类Dev

Node.js:如何将全局变量传递到通过require()插入的文件中?

来自分类Dev

我如何将HTTP响应从一个活动传递到android中的另一个活动

来自分类Dev

如何将元素的ID传递到.js文件?

来自分类Dev

如何将ArrayList从主要活动传递到在单独进程中运行的后台服务?

来自分类Dev

如何将youtube视频URL传递到android Studios中的新活动?

来自分类Dev

如何将js变量从ajax传递到内部ajax?

来自分类Dev

Node.js。如何将几个流(数组或链)传递到管道中?

来自分类Dev

如何将数据从主要活动传递到Kotlin中的BroadcastReciever

来自分类Dev

如何将意图从适配器类传递到其他活动,但是我的变量在其他活动中

来自分类Dev

如何将jwt从swift客户端传递到node.js服务器

来自分类Dev

如何将JS循环变量传递到FireStore中

来自分类Dev

如何将ID传递到React Js路径链接?

来自分类Dev

如何将ID传递到React Js路径链接?

来自分类Dev

如何将ID传递到React Js路径链接?

来自分类Dev

如何将参数从JS函数传递到PHP代码

来自分类Dev

如何将变量从Notificationmanager传递到android中的活动

来自分类Dev

如何将“ this”从QML元素传递到JS函数

来自分类Dev

如何将值从活动传递到同一活动中的任何地方?

来自分类Dev

如何将整数传递给Android中的新活动?

来自分类Dev

Node.js:如何将参数的值从终端传递到JS脚本

来自分类Dev

Node.js:如何将JS变量的值从脚本传递到终端?

来自分类Dev

将数据从线程传递到活动

来自分类Dev

如何将图像从一个活动动态传递到另一个活动,并通过JSON在imageview中显示

来自分类Dev

如何将数组列表对象从活动传递到android中的片段

来自分类Dev

如何将 int 值从一个活动传递到另一个活动并在 TextView 中显示?

来自分类Dev

如何将编辑文本字符串从一个活动传递到另一个活动中的方法?

Related 相关文章

  1. 1

    Node.js:如何将参数的值从终端传递到JS脚本

  2. 2

    Angular:如何将$ scope变量传递到Node.js服务器。

  3. 3

    Node.js:如何将JS变量的值从脚本传递到终端?

  4. 4

    Node.js:如何将全局变量传递到通过require()插入的文件中?

  5. 5

    我如何将HTTP响应从一个活动传递到android中的另一个活动

  6. 6

    如何将元素的ID传递到.js文件?

  7. 7

    如何将ArrayList从主要活动传递到在单独进程中运行的后台服务?

  8. 8

    如何将youtube视频URL传递到android Studios中的新活动?

  9. 9

    如何将js变量从ajax传递到内部ajax?

  10. 10

    Node.js。如何将几个流(数组或链)传递到管道中?

  11. 11

    如何将数据从主要活动传递到Kotlin中的BroadcastReciever

  12. 12

    如何将意图从适配器类传递到其他活动,但是我的变量在其他活动中

  13. 13

    如何将jwt从swift客户端传递到node.js服务器

  14. 14

    如何将JS循环变量传递到FireStore中

  15. 15

    如何将ID传递到React Js路径链接?

  16. 16

    如何将ID传递到React Js路径链接?

  17. 17

    如何将ID传递到React Js路径链接?

  18. 18

    如何将参数从JS函数传递到PHP代码

  19. 19

    如何将变量从Notificationmanager传递到android中的活动

  20. 20

    如何将“ this”从QML元素传递到JS函数

  21. 21

    如何将值从活动传递到同一活动中的任何地方?

  22. 22

    如何将整数传递给Android中的新活动?

  23. 23

    Node.js:如何将参数的值从终端传递到JS脚本

  24. 24

    Node.js:如何将JS变量的值从脚本传递到终端?

  25. 25

    将数据从线程传递到活动

  26. 26

    如何将图像从一个活动动态传递到另一个活动,并通过JSON在imageview中显示

  27. 27

    如何将数组列表对象从活动传递到android中的片段

  28. 28

    如何将 int 值从一个活动传递到另一个活动并在 TextView 中显示?

  29. 29

    如何将编辑文本字符串从一个活动传递到另一个活动中的方法?

热门标签

归档