使用持久连接和ASP.NET JavaScript客户端,我正在尝试连接到与提供页面的子域不同的子域.
来自webserver的ASP.Net页面sub1.mydomain.com想要连接到SignalR sub2.mydomain.com.在同一子域内连接时,相同的代码可以正常工作.
我找到了另一篇文章,其中启用了跨域连接:
jQuery.support.cors = true;
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用.
如何使用持久连接和JavaScript客户端连接到第二个子域中的SignalR?
每次停止/启动连接时,都会复制集线器发送到客户端的消息.
如果我执行这个序列:$ .connection.hub.stop()$ .connection.hub.start(){...}
并从服务器中心向客户端发送消息,一次接收消息.如果我重新执行上面的序列,我将收到两次相同的消息,即使服务器集线器调用Clients.Client(Context.ConnectionId).acceptMsg(msg); 只有一次.对于具有connectionId的相同消息,在客户端调用acceptMsg两次.我使用Clients.All.acceptMsg(msg)获得相同的结果
对于每个后续停止/开始,消息进一步重复; 第三次发送三条消息,第四条发送四条消息,等等.
我已经尝试分离停止的调用并开始几分钟,但它没有任何区别.
其他细节:Javascript客户端,SignalR v2.0.1,Chrome版本31.0.1650.63,ASP.Net 4.5.SignalR在我的测试中使用长轮询,我允许默认协商.在SignalR跟踪中,"SignalR:Aborted xhr request".在停止之后,开始之前观察.
知道是什么导致我的消息在这种情况下被复制?
在连接时,我将clientID映射到我在静态变量中构建的其他客户端和订阅信息.这工作正常,直到应用程序池回收或重新编译,然后我丢失了我的映射.
应用程序池回收后客户端连接仍然存在,但我在OnConnectAsync()或OnReceivedAsync()方法中看不到任何内容.
我在Firebug中看到我的客户每4分钟提交一个新的POST.是否有一些SignalR事件我可以覆盖以捕获传入的POST并重建当前持久连接的客户端映射?
谢谢.