libhv icon indicating copy to clipboard operation
libhv copied to clipboard

WebSocketServer无法从外部指定loop吗

Open YuriArthas opened this issue 10 months ago • 3 comments

看起来WebSocketServer/HttpServer/其他Server, 无法使用外部传入的loop 那么每创建N个服务, 都要创建N个新loop, 和N*M个线程

YuriArthas avatar Apr 18 '24 04:04 YuriArthas

HttpServer/WebSocketServer不支持传入外部loop,不过你可以在HttpServer的onWorkerStart回调里通过currentThreadEventLoop获取到当前线程的loop

ithewei avatar Apr 18 '24 07:04 ithewei

也就是说, 如果想同时创建N个不同Server, 无论如何也不能只用一个loop以及只用一个thread 感觉这有些奇怪, 与libuv或者asio等库的思路相当不一样

这多少增加了开发者在线程安全方面的负担

YuriArthas avatar Apr 18 '24 12:04 YuriArthas

TcpServer类或者更底层的hloop是支持使用同一个loop的,你可以先创建WebSocketServer,然后在onWorkerStart里通过currentThreadEventLoop获取到当前线程的loop,然后再去使用这一个loop。 当然如果你想创建多个HttpServer/WebSocketServer使用一个loop,当前的封装是不行的,可以基于TcpServer去实现。

ithewei avatar Apr 18 '24 13:04 ithewei