【发布时间】:2018-10-08 01:52:57
【问题描述】:
我正在尝试在我的 node.js 平台中实现服务器层次结构。我喜欢让事情保持可塑性,并希望让我的基础服务器类保持足够开放,以便基于 TCP 或 UDP 或 Web 套接字(或其他任何东西)。
理想的层次结构应该是这样的
WebSocketChatServer extends ChatServer extends Server
WebSocketGameServer extends GameServer extends Server
WebSocketMatchmakingServer extends MatchmakingServer extends Server
意思是我也可以做
TcpChatServer extends ChatServer extends Server
现在,为什么我不能这样做?
服务器
- 管理通用
Clients - 可以路由传入的命令
- 不侦听任何端口,因为它不知道其是否为 UDP、TCP、websocket 等
聊天服务器
- 管理通用
ChatClients - 创建默认聊天频道(例如“普通聊天”)
WebSocketChatServer
- 在某个端口上监听
ws或wss - 创建新客户端并监听网络套接字事件
- 启动所需的 http/https 服务器
- 设置ssl
所以问题就在这里。我所有的实际 websocket 处理都是在顶层。这意味着WebSocketGameServer 和WebSocketWhateverServer 需要将所有方法复制粘贴到其中。更合适的方法是
ChatWebSocketServer extends WebSocketServer extends Server
GameWebSocketServer extends WebSocketServer extends Server
MatchmakingWebSocketServer extends WebSocketServer extends Server
现在所有这三个WebSocketServer 类型都具有所有必需的 websocket 逻辑。但是,现在我已经失去了ChatServer、GameServer 等的通用性。
我能做些什么来保持ChatServer、GameServer 和任何其他Server 通用,然后将它们实现到WebSocketServers 中而不复制所有Web 套接字侦听器和处理程序?
【问题讨论】:
标签: javascript node.js