8

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

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

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

然而,iOS 4.2 上的 Safari 和 WP7.10 上的 IE - 他们都糟透了。有时当我按下“发布”按钮时什么也没发生。有时传出消息可以正常发送到桌面 Firefox,但是没有传入消息。

也许我错过了一些明显的东西?也许我需要 jquery mobile 而不是普通的?也许我应该只调整 IIS/web.config/whatever,SignalR 将蓬勃发展并开始完美地工作,即使通过蹩脚的移动互联网?

或者这是否意味着即使在从网络服务器单跳的 WiFi 上它也不能工作,我应该扔掉 SignalR,只写一些 JavaScript 来轮询 JSON 端点以获取新消息?

提前致谢!

4

2 回答 2

6

我一直在为 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();
于 2013-05-23T12:07:45.253 回答
0

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

于 2012-03-25T20:13:12.410 回答