是否有一个简单的,脚踏实地的示例/示例/教程,用于ASP.NET 4.0中的WebSockets服务器和客户端实现,以帮助我入门?我知道这个问题已被提出,但尚未得到妥善回答.客户端有很多东西,但在ASP.NET中找不到关于服务器端的简单解释
谢谢!
〜更新: 我发现本教程,但无法使其工作,连接在尝试连接后立即关闭.任何人都可以使它工作? http://www.undisciplinedbytes.com/2010/06/html-5-c-web-sockets-server-and-asp-net-client-implementation/
自托管应用程序似乎没有运行IIS,因此它需要特定的操作系统才能在服务器端启用Web套接字?
我在使用SignalR实际使用网络套接字时遇到问题.它是使用ASP.NET MVC构建的Intranet应用程序.
为了测试,我使用SignalR v2.1.2 将ASP.NET站点中的简单聊天应用程序放在一起.
我把它放在我们的一个开发服务器(Windows Server 2012,IIS8,.NET 4.5.1)上,我在Windows 7上使用Chrome.
查看Chrome开发工具的"网络"标签,它与ServerSentEvents连接.谈判呼叫看起来像这样
ConnectionId: "eee14afe-6598-492e-81ae-f14b98041474"
ConnectionTimeout: 110
ConnectionToken: "1iDREVWa++NL0Cj95i++QOufi+1+ywZlY1Tsrv7t06zqca5wn6nvPRLJQOd8/I7EPEaDGabP1MfqhoR/Q2D1vFK6bdujXdFoxGYF XlZ00AHLw9qjDuDgyx3+6a7qXHGFKp6ag6zu4TGuuW9sqM/nkw=="
DisconnectTimeout: 30
KeepAliveTimeout: 20
LongPollDelay: 0
ProtocolVersion: "1.4"
TransportConnectTimeout: 5
TryWebSockets: false
Url: "/Chat/signalr"
Run Code Online (Sandbox Code Playgroud)
然后我将同一个应用程序复制到生产服务器,再次是Windows 2012 Server,IIS8,.NET 4.5.1.
这次应用程序使用Web套接字进行连接,协商调用如下所示:
ConnectionId: "27484ca2-2935-43fd-a6eb-ae13f7fdbd54"
ConnectionTimeout: 110
ConnectionToken: "AhL+5jrvoHa0FXdU+Zg3dJ4a3Avfw28aOZN7raTHpYxUte4GA5Ru9ZmdDZMtCZOFbnpGzOmktY56jH2Tbz+I7g3OO5RnMlBBn8CSg5Il8fb0p/faK1ShGbWhFOKBe9Ns"
DisconnectTimeout: 30
KeepAliveTimeout: 20
LongPollDelay: 0
ProtocolVersion: "1.4"
TransportConnectTimeout: 5
TryWebSockets: true
Url: "/Chat/signalr"
Run Code Online (Sandbox Code Playgroud)
由于未知原因,这次TryWebSockets为True.
任何人都可以告诉我为什么在第一个例子中它不试图使用Web套接字?可能是IIS配置?我确保两个实例在其应用池中具有相同的设置.
可能是防火墙问题?这两台服务器位于网络的不同部分,但我不确定它们之间的区别.也许这是路由器问题?
这些应用已在Chrome v38和IE 11中进行了测试.
欢迎任何想法/解决问题的步骤.
编辑:
好的,我在ASP.NET网站上的本文后面的服务器和javascript中启用了跟踪
服务器生成带有以下内容的传输日志文件:
SignalR.Transports.TransportHeartBeat Information: 0 : Connection 6b0193e6-bde6-4130-b4da-178fd24a786a is New. …Run Code Online (Sandbox Code Playgroud)