15 messaggi dal 14 marzo 2011
Buongiorno a tutti.
Sto sperimentando con i websocket. Uso ASP.NET 4.0, IIS 7.5 Express e come libreria per i websocket uso Fleck per la sua semplicità. Preferisco non usare IIS 8 e SignalR perché non compatibili con WinXP e il framework 4.0.
Tutto funziona se uso es. http://192.168.1.109:8080 per il sito web e ws://192.168.1.109:8181 per il websocket, ma se tento di passare a https://192.168.1.109:44300 e wss://192.168.1.109:8431 il websocket non funziona più e osservando con Firebug ottengo il messaggio "Firefox non può stabilire una connessione con il server wss://192.168.1.109:8431/" (anche con Chrome comunque non funziona). IIS nella sua console non "dice" nulla di particolare, come quando usavo le connessioni non protette. Se provo a fare il debug con il server interno ASP.NET non scattano eccezioni nella libreria dei websocket lato server. Ho usato un certificato self-signed per la wss, ma non ottengo errori di certificato. L'unica cosa che mi viene in mente è che il browser stesso rifiuti di connettersi ad un indirizzo con la porta diversa da quella del sito, per il discorso della same origin, però in realtà cambia anche lo schema, e poi nella prove con protocolli non protetti andava. Ho cercato molto in Internet, ma senza successo, posto qui con fiducia che qualcuno sappia darmi qualche dritta per puntarmi nella giusta direzione, grazie.
Massimo
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

Mmax2 ha scritto:

il browser stesso rifiuti di connettersi ad un indirizzo con la porta diversa da quella del sito, per il discorso della same origin

Potrebbe essere, ma in tal caso troverai un avviso esplicito nella console (o nella scheda Network) del browser.
Anche il certificato potrebbe essere la causa, se per esempio l'hai autofirmato.

Mmax2 ha scritto:

Preferisco non usare IIS 8 e SignalR perché non compatibili con WinXP e il framework 4.0.

Per la stessa ragione, non è il caso di usare unicamente WebSockets, perché un utente che ha Windows XP può installare al massimo IE8, che non supporta questa tecnologia.
http://caniuse.com/#feat=websockets

Prova comunque usare SignalR, perché se il client (o il server) non supportassero WebSockets, può comunque fare il fallback su tecnologie alternative, come i Server-sent events, forever frame o, alla peggio, il long polling.
Ti permette di dimenticarti del trasporto usato (e delle relative incompatibilità) e di concentrarti esclusivamente sullo sviluppo dell'applicazione.

La versione 1 di SignalR è disponibile anche per il framework 4.0, mentre la 2 richiede il 4.5.

ciao,
Moreno
Modificato da BrightSoul il 15 luglio 2014 00.59 -

Enjoy learning and just keep making
15 messaggi dal 14 marzo 2011
Grazie Moreno per la tua preziosa risposta, che mi ha puntato nella giusta direzione:
Anche il certificato potrebbe essere la causa, se per esempio l'hai autofirmato.

Infatti e' il certificato autofirmato che pone moltissimi problemi ai browser, per questioni di sicurezza, come ho potuto vedere in giro per Internet. Inoltre i browser non richiedono nulla se all'interno del codice javascript viene richiesta una risorsa con un url differente da quello del sito web. Se quindi apro il sito con https://192.168.1.109:44300 e poi richiedo con il javascript la risorsa wss://192.168.1.109:8431, il browser la rifiuta e non notifica nulla all'utente. Ritengo quindi di essere "costretto" ad usare la stessa porta sia per il sito che per la risorsa WebSocket: in questo modo il certificato accettato dall'utente all'apertura del sito verra' ritenuto valido anche per la risorsa interna.

Grazie anche per la dritta su SignalR, ma vorrei tenerlo come ultima spiaggia perche' ha molti prerequisiti da rispettare e io dovrei cambiare PC per farlo andare. Nella versione 1.x dice infatti che funziona con il framework 4.0, ma se si vogliono i websocket si deve usare il 4.5. Inoltre si parte dal Windows 7 in su.

Grazie ancora.
Massimo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.