2012-03-01 13 views
8

Sto valutando la tecnologia SignalR per l'utilizzo nel nostro nuovo prodotto (applicazione web mobile per il vasto pubblico, tra le altre cose ha bisogno di una chat in tempo reale su alcune pagine).SignalR su web mobile?

Ho seguito the guide per creare una demo di chat molto semplice. Quindi ho distribuito la demo sul mio IIS e ho iniziato a chattare da solo. Tutti i client erano sulla stessa rete WiFi.

I browser desktop hanno funzionato più o meno bene.

Tuttavia, Safari su iOS 4.2 e IE su WP7.10 - entrambi hanno fatto schifo. A volte non accadeva nulla quando premevo il pulsante "post". A volte i messaggi in uscita venivano inviati OK al desktop firefox, tuttavia non c'erano messaggi in arrivo.

Forse mi manca qualcosa di ovvio? Forse ho bisogno di jquery mobile al posto di quello normale? Forse dovrei semplicemente sintonizzare IIS/web.config/qualunque, e il SignalR fiorirà e inizierà a funzionare in modo impeccabile anche attraverso la pessima internet mobile?

O vuol dire che dal momento che non funziona anche su Wi-Fi all'interno di un singolo hop dal server web, dovrei buttare via SignalR e scrivere solo alcuni JavaScript per eseguire il polling di un endpoint JSON per i nuovi messaggi?

Grazie in anticipo!

+1

anch'io ho riscontrato questo problema. Molto interessato a qualsiasi risposta. (non c'è un pulsante di iscrizione quindi non è necessario lasciare un commento) – tgmdbm

+1

@ tgmdbm è possibile seguire la domanda tramite RSS. Il feed RSS per questa domanda è: http://stackoverflow.com/feeds/question/9509124 –

risposta

0

Non tutti i browser mobili (ad esempio, android, opera mini) supportano le web socket. Troverai un buon grafico dei browser di supporto a http://www.hanselman.com/blog/YourUsersDontCareIfYouUseWebSockets.aspx

+7

Non ha bisogno di WebSockets. AFAIK, per impostazione predefinita SignalR utilizza il polling lungo. – Soonts

+0

Oh, mi dispiace, hai ragione. SignalR ** può ** utilizzare WebSockets fino a quando il browser lo supporta, altrimenti utilizza un polling lungo. – lurkerbelow

6

Ho sviluppato un'app con PhoneGap (che significa che utilizza il browser Safari) e SignalR per Android e IPhone. Il problema maggiore che ho avuto è stato con iOS 6.x perché SignalR non si connetteva con la configurazione di default. Ho trovato una soluzione per questo e l'ho spiegato here. Fammi sapere se lo trovi utile.

Questo codice simula una connessione, controlla i messaggi, disconnette e attendi 5 secondi per risolvere il problema di iOS.

In js aggiungere

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

e in Application_Start() aggiungere

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

Per favore copia anche qui la tua soluzione alternativa a questo post. –

+0

Fatto. Ho modificato il post con il codice. –

+0

Cheers, ora è adatto per +1. :) –