我在 MVC 3 中有一个应用程序,我希望将 WebSockets(回退到 Comet)添加到它。
我进行了一些研究,发现彗星部分非常简单,我宁愿自己做。只需要 AsyncControllers 和一些非常简单的 js 就可以处理那些长期存在的 ajax 请求。
现在,在 WebSocket 的情况下,事情开始变得肮脏。我查看了一些库,但它们似乎大多设置了自己的 Web 服务器(因此需要另一个主机或端口),并在那里监听 ws 协议请求。例如SuperWebSocket就是这种情况,起初它看起来不错,但出现了“我是 Web 服务器”的问题(这当然很好,但我宁愿避免)。
然后我查看了“PingIt”或类似的东西,我现在找不到链接..,但我确实在另一台计算机上有源代码。这个确实在 mvc 的端点上运行,但我不太喜欢它处理事情的方式,比如它需要一个 IDisposable 对象并通过反射器创建一个在客户端呈现的 JavaScript 片段,这是非常污染的他们图书馆的名字,我真的不感兴趣,而且感觉很多东西都被扔进了我可能希望的地方,这违背了我对页面应该如何呈现的看法(特别是现在我正在研究 MVC,这几乎意味着我可以编写干净、不显眼的 html 页面)。
基本上我想要的是我的端点是这样的:
domain.com/rt/comet
domain.com/rt/socket
而不是
domain.com/rt/comet
domain.com:81/
那么:是否可以在 asp.net MVC 应用程序的控制器内的端点上接收 websocket 连接(并进行握手和任何需要做的事情),而不是在某处设置 tcplistener?
这也将帮助我让我的彗星代码更接近我的 websocket 代码
我应该说我对整个 comet/websockets 的事情非常陌生,所以我对协议的了解并不多(或任何),我确实了解如何使彗星工作,但在 websockets 中并不了解,尽管我'已经阅读并理解了基本知识以了解其要点。
另外:请让我知道我的要求是否离题