Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket 是Visual Studio';s浏览器链接功能是否能够使用web套接字?_Websocket_Signalr_Long Polling_Browser Link - Fatal编程技术网

Websocket 是Visual Studio';s浏览器链接功能是否能够使用web套接字?

Websocket 是Visual Studio';s浏览器链接功能是否能够使用web套接字?,websocket,signalr,long-polling,browser-link,Websocket,Signalr,Long Polling,Browser Link,据我所知,signar用于使用脚本与客户端浏览器通信。我有一个常见的问题,那就是我的浏览器的网络日志中充满了如下条目: …/arterySignalR/poll?transport=longPolling&connectionToken= 这告诉我signar已经退回到长轮询,而不是使用web套接字。假设我们有一个支持web套接字的浏览器,并且该浏览器在本地主机上运行,那么Signal不应该默认使用web套接字吗?什么可能导致它退回到长轮询?简短回答 浏览器链接将仅在Windows 8或Wind

据我所知,signar用于使用脚本与客户端浏览器通信。我有一个常见的问题,那就是我的浏览器的网络日志中充满了如下条目:

…/arterySignalR/poll?transport=longPolling&connectionToken=


这告诉我signar已经退回到长轮询,而不是使用web套接字。假设我们有一个支持web套接字的浏览器,并且该浏览器在本地主机上运行,那么Signal不应该默认使用web套接字吗?什么可能导致它退回到长轮询?

简短回答

浏览器链接将仅在Windows 8或Windows Server 2012上使用WebSocket

更长的答案

以下内容将解释在Windows 7、Windows Vista或Windows Server 2008上使用Visual Studio时出现的问题:

IIS(Express)依赖于中的.NET framework实现来处理WebSocket连接;正如您在MSDN链接中所读到的,在Windows 7上安装.NET 4.5时,您根本无法获得所需类的实际实现


因此,在这种情况下,服务器无法同意客户端从标准HTTP更改为WebSocket协议的请求,这迫使Signal客户端使用其中一个回退选项(在您的情况下为长轮询)。

此问题不应以“主要基于意见”的方式结束;问题不在于WebSocket是否是更好的选择,而在于为什么即使浏览器和信号器支持WebSocket,连接也可能不使用WebSocket;这可以完全根据事实来回答(尽管可能需要更多信息),拉尔斯是对的。根据我的经验,浏览器链接确实使用WebSocket。我想获得更多信息以帮助确定发生这种情况的原因。@Dan您在Windows 7上运行VS吗?Windows 7未实现.NET中的WebSocket支持。(不确定这个问题是否/何时会重新开始,所以我现在把这个放在这里)@LarsHöppner谢谢你的回答。我们都在运行Windows7,但你知道.NET是如何不支持它的吗?浏览器支持它,我认为隐藏的浏览器链接iisexpress(8?)进程也支持它,SignalR肯定支持。信号器也支持Windows7。.NET还有什么可能发挥作用呢?IIS本身并不实现WS,它取决于中的.NET framework实现;正如您在MSDN链接中所读到的,当您在Windows7上安装.NET4.5时,您根本无法获得所需类的实际实现;因此,信号器必须转到
if(windows7){弃船();}
,然后使用一个回退选项