2012-03-01 37 views
8

Tôi đang đánh giá công nghệ SignalR để sử dụng trong sản phẩm mới của chúng tôi (ứng dụng web di động cho đối tượng rộng, trong số những thứ khác cần trò chuyện trong thời gian thực trên một số trang).SignalR trên web di động?

Tôi đã theo dõi the guide để tạo bản trình diễn trò chuyện rất cơ bản. Sau đó, tôi đã triển khai bản demo trên IIS của mình và bắt đầu trò chuyện với chính mình. Tất cả khách hàng trên cùng một mạng WiFi.

Trình duyệt trên máy tính làm việc nhiều hơn hoặc ít hơn OK.

Tuy nhiên, Safari trên iOS 4.2 và IE trên WP7.10 - cả hai đều bị hút. Đôi khi không có gì xảy ra khi tôi nhấn nút "đăng". Đôi khi thư gửi đi được gửi OK tới firefox trên máy tính để bàn, tuy nhiên không có thư đến.

Có thể tôi thiếu điều gì đó hiển nhiên? Có lẽ tôi cần điện thoại di động jquery thay vì bình thường? Có lẽ tôi chỉ nên điều chỉnh IIS/web.config/bất cứ điều gì, và SignalR sẽ phát triển mạnh và bắt đầu làm việc hoàn hảo ngay cả thông qua internet di động crappy? Hay nó có nghĩa là vì nó không hoạt động ngay cả khi trên WiFi trong một bước nhảy từ máy chủ web, tôi nên ném SignalR đi và chỉ cần viết một số JavaScript để thăm dò điểm cuối JSON cho thư mới?

Cảm ơn trước!

+1

tôi cũng đã gặp phải vấn đề này. Rất quan tâm đến bất kỳ câu trả lời nào. (là không có nút đăng ký vì vậy tôi không cần phải để lại một bình luận) – tgmdbm

+1

@tgmdbm bạn có thể làm theo các câu hỏi của RSS. Nguồn cấp dữ liệu RSS cho câu hỏi này là: http://stackoverflow.com/feeds/question/9509124 –

Trả lời

0

Không phải tất cả các trình duyệt di động (ví dụ: android, opera mini) đều hỗ trợ websockets. Bạn sẽ tìm thấy một biểu đồ tốt về các trình duyệt hỗ trợ tại http://www.hanselman.com/blog/YourUsersDontCareIfYouUseWebSockets.aspx

+7

Nó không cần WebSockets. AFAIK, theo mặc định SignalR sử dụng bỏ phiếu dài. – Soonts

+0

Ồ, tôi rất tiếc, bạn nói đúng. SignalR ** có thể ** sử dụng WebSockets miễn là trình duyệt hỗ trợ nó nếu không nó sử dụng bỏ phiếu dài. – lurkerbelow

6

Tôi đã phát triển một ứng dụng với điện thoại (có nghĩa là sử dụng trình duyệt Safari) và SignalR cho Android và IPhone. Vấn đề chính tôi gặp phải là với iOS 6.x vì SignalR không kết nối với cấu hình mặc định. Tôi đã tìm thấy một giải pháp cho điều đó và tôi đã giải thích nó here. Hãy cho tôi biết nếu bạn thấy nó hữu ích.

Mã này sẽ mô phỏng kết nối, kiểm tra tin nhắn, ngắt kết nối và đợi 5 giây để giải quyết vấn đề iOS.

Trong js thêm

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

và trong Application_Start() thêm

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

Vui lòng sao chép cách giải quyết của bạn tại đây vào bài đăng này. –

+0

Xong. Tôi đã chỉnh sửa bài đăng với mã. –

+0

Chúc mừng, giờ đây nó phù hợp cho +1. :) –

Các vấn đề liên quan