我最近发现了 WebSockets 及其在我的项目中的可能用途。目前,我使用原始 Web 套接字,但我一直在探索制作自定义传输绑定(bind)/ channel 的可能性,它可以处理所有内容并允许我在 IIS 中托管它。
我已经开始着手解决这个问题,但我在弄清楚如何让 IIS 将适当的请求转发给我时遇到了问题。我一直在阅读 Microsoft 的 UDP 传输示例,但它的托管方式与我不同,因此在这方面它不是很有用。该示例在 WCF 代码本身中创建了一个 UDP 套接字,这似乎不是正确的方法。我可以让我的绑定(bind)手动创建一个端口来监听,但是我必须重新实现 IIS/ASP.NET 涵盖的内容。
由于 WebSocket 以普通 HTTP 请求开始,然后升级为类似于 HTTP 的协议(protocol),我需要让 IIS 为我提供一个我可以读取和写入的流。
我一直在使用 .NET Reflector 来查看 webHttpBinding 以了解它们是如何做到的。他们似乎使用 httpapi.dll 来 P/Invoke HttpCreateRequestQueue。这就是我想要的吗?
这与webBindingSocket 生成客户端代理JavaScript 的方式非常相似,但我会自动生成回调方法以允许服务器轻松调用浏览器上的方法。
例子:
http://localhost/WebSocket.svc - 服务元数据资料
http://localhost/WebSocket.svc/jsdebug - JavaScript 客户端代理
http://localhost/WebSocket.svc/stream - WebSocket 所在的位置
如果我的问题看起来令人困惑,我很抱歉,但我一直盯着大量代码试图弄清楚它是如何工作的。基本上,我想让在我的代码中使用 WebSockets 变得更容易,而不必担心将消息序列化到服务器/从服务器发出消息并调用正确的方法,我将在 WCF 中处理所有这些。
谢谢
最佳答案
Microsoft 正在研究 WebSocket 实现,有关详细信息,请参阅: http://blogs.msdn.com/b/interoperability/archive/2010/12/21/introducing-the-websockets-prototype.aspx
WCF/Web 团队在此处发布对其 Codeplex 站点的更新:http://wcf.codeplex.com/
--拉尔夫
关于c# - WebSocket WCF 传输绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3771802/