我试图让websockets在我的开发环境中工作:
不幸的是,Javascript客户端正在使用长轮询。当我在客户端强制使用Web套接字时,我根本无法连接:
$.connection.hub.start({ transport: ['webSockets'] })
服务器代码是自托管的,基于示例,如下所示:
static void Main(string[] args)
{
string url = "http://localhost:8081/";
var server = new Server(url);
// Map the default hub url (/signalr)
server.MapHubs();
// Start the server
server.Start();
Console.WriteLine("Server running on {0}", url);
// Keep going until somebody hits 'x'
while (true)
{
ConsoleKeyInfo ki = Console.ReadKey(true);
if (ki.Key == ConsoleKey.X)
{
break;
}
}
}
public class MyHub : Hub
{
public void Send(string message)
{
Clients.addMessage(message);
}
}
我四处搜寻,没有发现任何确定性。我是否需要指定一些额外的东西,使用Visual Studio 2012或者这只适用于Windows 8 / IIS 8?
除了解决SignalR中WebSockets问题的上述解决方案之外,如果您在公司网络内(或类似结构的东西),您的代理和防火墙可能会干扰握手。
但是,如果您通过SSL访问它,它提供的包装器在许多情况下可以保护它免受这种干扰。