[eggjs/egg]【请教】如何在egg中启动多个TCP Server

2024-07-22 288 views
8

我现在有个需求,启动多个Tcp 服务器(监听不同的端口),接收客户端发送来的数据,同时也有通过http发送来的,因为处理这些数据的逻辑基本一致,所以就想利用egg统一来做,那么这些服务器是在app.js启动还是agent.js启动比较好呢,如何利用好egg的多进程特性。

回答

3

顶,同求

7

目前 egg 官方的 tcp server 只支持监听一个端口

1

egg 是 http server,感觉你需要一个网关,把 tcp 的请求转换为 http 请求给 egg。

5

如果处理逻辑完全一样,只是监听多个端口的话,这个支持会比较简单点

2

我现在是这样做的,在agent中启动一个Tcp server,把socket的各种事件和数据通过egg的ipc机制随机发送给一个worker,在worker中监听ipc的事件,并交由service处理。这样不知道会不会对agent的稳定性造成影响。还有就是当数据量比较大的时候,ipc的效率如何。

3

大神,其实启动多个TCP的需求是这样的,前端在消费一个服务的时候,有时候需要同时请求多个相同逻辑的服务,以提高前端响应效率(有点类似并发的意思),我尝试过在router里面加查询参数,指向同一个service(api/:_para/XXXservice),但是没有什么卵用

2

@hankexu

agent 里面不要做业务的事情,你直接在 app worker 上监听就好了,在 cluster 模式它会自动通过 master 来分配 socket 句柄

7

没必要监听多个端口吧

7

明白了,多谢