从REST和服务器vs客户端事件的角度理解websockets



一段时间以来,我一直在我的项目设计中实现RESTful API,因为在我的情况下,它对其他人能够以一致的格式与数据交互非常有用(并且我发现REST是处理请求的一种干净的方式)。我现在不仅要为我的资源提供当前的REST API,而且要通过双向websocket连接公开一些信息的能力。

在搜索一个好的。net库来实现websocket协议时,我确实找到了SignalR。有一些问题,我有它(可能具体到我的项目?)

我希望能够初始化一个web套接字连接通过我的现有的REST API。(我不知道该怎么做,但是我想一个自定义标题会工作得很好)我想要他们(的客户端)能够关闭连接并获得HTTP响应返回(101?)表示完成。

我在SignalR中遇到的问题是:

  • 在集线器实例之外没有干净的方法来获取用户的连接id并将其映射到外部控制器,其中rest调用会影响哪些数据被广播到特定的客户端(我不想使用外部内存)
  • 对客户端代码的巨大依赖。我真的想让这个过程对客户端来说很简单,并处理服务器端的大部分工作(我曾希望修改我当前的rest api来完成)。在我看来,客户唯一的责任就是和平地断绝关系。

那么现在的问题是…

是否有一个好的服务器端websocket库为。net实现最新的websocket协议?客户端可以使用遵守协议的任何客户端库。结合web套接字连接和restful api的最佳实践是什么?

. NET支持WebSockets本身,如果你有IIS8(仅Windows 8/2012及更高版本)。SignalR只是一个多边形,

如果你没有IIS8,你可以使用像我这样的外部WebSocket框架:http://vtortola.github.io/WebSocketListener/

欢呼。

最新更新