一段时间以来,我一直在我的项目设计中实现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/
欢呼。