节点js中的Web套接字服务器继承链

约森巴辛

我正在尝试在我的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

现在,为什么我不能这样做?

服务器

  • 管理通用Client小号
  • 可以路由传入的命令
  • 不侦听任何端口,因为它不知道其UDP,TCP,websocket等

聊天服务器

  • 管理通用ChatClient小号
  • 创建默认的聊天频道(例如“常规聊天”)

WebSocket聊天服务器

  • 侦听wswss在某个端口上
  • 创建新客户端并侦听Web套接字事件
  • 旋转所需的http / https服务器
  • 设置ssl

因此,问题就出在这里。我所有实际的websocket处理都是在顶层进行的。这意味着WebSocketGameServer并且WebSocketWhateverServer将需要所有复制粘贴到其中的方法。一个更合适的方法是

ChatWebSocketServer extends WebSocketServer extends Server

GameWebSocketServer extends WebSocketServer extends Server

MatchmakingWebSocketServer extends WebSocketServer extends Server

现在,所有这WebSocketServer三种类型都具有所有必需的websocket逻辑。但现在我已经失去的一般性词语ChatServerGameServer等等。

我该怎么做才能保留ChatServerGameServer和任何其他Server泛型,然后将它们实现为,WebSocketServer而无需复制所有Web套接字侦听器和处理程序?

TJ人群

定义一个用于通信层的抽象接口,并使其成为Server层次结构中的类使用的东西,而不是它们使用的东西(聚合/组成而不是继承)。您甚至可以将其注入到Server构造函数中(一种形式的依赖注入),这可能对于测试很方便。

然后,您将实现TCP,WebSockets等的接口,仅将这些接口保留在将具体通信方法映射到抽象通信接口的细节上。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何更新来自React.js中Web套接字服务器的值?

节点服务器,套接字,请求和响应超时

套接字和Web服务器示例之间的区别

服务器发送事件与Web套接字?

C#构建Web套接字服务器

使用Apache 2.4的闪亮服务器中的代理Web套接字

Web套接字从我的服务器中获取实时数据

客户端js上的套接字服务器?

从Web套接字服务器(高速公路)连接到常规套接字服务器

客户端中的关闭套接字使Node.js服务器崩溃

套接字io,节点js,从服务器向客户端发送图像/文件的简单示例

Node.js-WebSocket节点模块:如何使多客户端套接字服务器正常工作?

简单Scala TCP服务器中的套接字问题

Bash中的简单套接字服务器?

Linux中的正常关机服务器套接字

从HTTP服务器中的套接字读取的推荐方法

UDP套接字未从Go中的服务器读取

Unity中的简单套接字服务器

python中的套接字服务器拒绝连接

C#中的TCP套接字服务器

C ++中的TCP服务器套接字打开失败

Swift 4中通过CFNetwork的套接字服务器

C 中的套接字编程,服务器代码出错

连接到在Eclipse中运行的服务器套接字

异步套接字服务器中的 OutOfMemoryException

来自不同服务器的http服务器和Web套接字

Flutter套接字IO无法连接到Node JS套接字IO服务器

Python 2.7.8:套接字-TCP套接字中的客户端服务器数据丢失

节点套接字io-在套接字之间以及客户端和服务器之间共享全局对象