代码之家  ›  专栏  ›  技术社区  ›  Moshe Shaham

我应该使用现有的websocket连接进行请求/响应操作吗?

  •  0
  • Moshe Shaham  · 技术社区  · 2 年前

    我正在设计一款游戏,它利用websockets实时交流游戏动作,并在参与者之间聊天。

    我还需要客户端进行元数据操作,例如:

    • 创建新游戏表
    • 获取当前游戏的参与者列表
    • 邀请其他用户

    我的问题是,这些操作是应该在已经存在的websocket连接中执行,还是应该为它们创建REST API端点?

    使用websockets的好处是它已经打开了,所以速度会更快,而且我已经有了用户身份验证。

    使用API的优点是,所有这些操作对于请求/响应通信来说都是非常自然的。我的意思是,如果我需要在WebSocket中实现它,客户端将发出一个请求,响应将在将来某个时候出现(可能),我必须扫描套接字中的消息流,并手动将每个响应分配给相应的请求。

    我还需要考虑其他一些问题,你对此有何看法?

    0 回复  |  直到 2 年前
        1
  •  0
  •   CyberFonic    2 年前

    Roy Fielder的论文中描述的REST提供的远远不止是请求/响应交互。但大多数应用程序只实现基本的GET/PUT/POST/DELETE/OPTION HTTP谓词。从概念上讲,REST不限于通过HTTP实现。因此,WebSocket可以用来实现类似的协议。

    我想您已经意识到WebSockets实际上是HTTP之上的TCP实现。因此,在网络基础设施方面,有些情况下REST over HTTP缓存/代理机制的性能更高。

    根据我在HTTP上使用REST的经验,如果使用多个不相关的来源,CORS可能会成为一个问题。这取决于服务器对它们的处理能力。