SignalR在移动网络上

SignalR on mobile web?

本文关键字:网络 移动网 移动 SignalR      更新时间:2023-09-26

我正在评估SignalR技术在我们的新产品中的应用(面向广大受众的移动网络应用程序,除其他外,它需要在某些页面上进行实时聊天)。

我已经按照指南创建了一个非常基本的聊天演示。然后,我在IIS上部署了演示,并开始与自己聊天。所有客户端都在同一个WiFi网络上。

桌面浏览器工作或多或少还可以。

然而,iOS 4.2上的Safari和WP7.10上的IE都很糟糕。有时,当我按下"发布"按钮时,什么也没发生。有时传出的消息会正常发送到桌面firefox,但没有传入的消息。

也许我错过了一些显而易见的东西?也许我需要jquery手机而不是普通的?也许我应该调整IIS/web.config/什么,SignalR就会蓬勃发展,即使在糟糕的移动互联网上也能完美工作?

或者这是否意味着,由于它即使在距离网络服务器一跳的WiFi上也不起作用,我应该放弃SignalR,只写一些JavaScript来轮询JSON端点以获取新消息?

提前感谢!

我一直在为Android和IPhone开发一款带有phonegap(即使用Safari浏览器)和SignalR的应用程序。我遇到的主要问题是iOS 6.x,因为SignalR没有连接到默认配置。我找到了一个解决办法,并在这里进行了解释。如果你觉得有用,请告诉我。

此代码将模拟连接、检查消息、断开连接并等待5秒以解决iOS问题。

在js中添加

$.connection.hub.start({ transport: 'longPolling' }).done(function (myHubConnection) { });

并在Application_Start()中添加

GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(1);
Microsoft.AspNet.SignalR.Transports.LongPollingTransport.LongPollDelay = 5000;
RouteTable.Routes.MapHubs();

并非所有的移动浏览器(如android、opera-mini)都支持websocket。您可以在上找到一个很好的支持浏览器的图表http://www.hanselman.com/blog/YourUsersDontCareIfYouUseWebSockets.aspx