Connessione a IIS 8 da Safari 5.1.7 da WebSocket

I miei browser IE, Chrome, Chrome androud, Opera, Firefox sono connessi con successo al mio IIS da WebSocket. Vedere un esempio:

La stretta di mano del cliente appare come segue:

GET /SimpleChatApplication/ChatHandler.ashx HTTP / 1.1

Ospite: pc2014: 80

Connessione: Aggiornamento

Pragma: nessuna cache

Controllo cache: nessuna cache

Aggiornamento: websocket

Origine: http // pc2014

Sec-WebSocket-Version: 13

User-Agent: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, come Gecko) Chrome / 45.0.2454.85 Safari / 537.36

Accept-Encoding: gzip, deflate, sdch

Accetta-lingua: ru, en; q = 0.8, en-US; q = 0.6

Sec-WebSocket-chiave: rrKYVVaPKmMnINtsUh9BNg ==

Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

La stretta di mano dal server appare come segue:

HTTP / 1.1 101 Protocolli di commutazione

Cache-Controllo: privato

Aggiornamento: Websocket

Server: Microsoft-IIS / 8.5

X-AspNet-Version: 4.0.30319

Sec-WebSocket-Accetta: IQ / qcgyu36N / d1p0JEU7nZ3W8Vo =

Connessione: Aggiornamento

X-Powered-By: ASP.NET

Data: Mer, 16 Set 2015 23:54:37 GMT

Ma se utilizzo Safari bowser allora:

La stretta di mano del cliente appare come segue:

GET /SimpleChatApplication/ChatHandler.ashx HTTP / 1.1

Aggiornamento: WebSocket

Connessione: Aggiornamento

Ospite: pc2014: 80

Origine: http: // pc2014

Sec-WebSocket-Key1: N9 Q32K \ 275z 5z <1 = 2 c

Sec-WebSocket-Key2: -1 z 6 # HA g) 1Aue0483 420d

La stretta di mano dal server appare come segue:

HTTP / 1.1 200 OK

Cache-Controllo: privato

Server: Microsoft-IIS / 8.5

X-AspNet-Version: 4.0.30319

X-Powered-By: ASP.NET

Data: Mer, 16 Set 2015 23:56:19 GMT

Contenuto-lunghezza: 0

HTTP / 1.1 400 richiesta errata

Tipo di contenuto: text / html; charset = us-ascii

Server: Microsoft-HTTPAPI / 2.0

Data: Mer, 16 Set 2015 23:56:19 GMT

Connessione: chiuso

Contenuto-lunghezza: 326


Brutta richiesta

Bad Request – Verbo non valido

Errore HTTP 400. Il verbo della richiesta non è valido.


Per favore spiegami where c'è errore? O Safari invia una richiesta non corretta o l'IIS riconosce in modo non corretto.

Ho usato il sito www.websocket.org per il test. Ho sostituito l'indirizzo del server da "ws: //echo.websocket.org" al mio indirizzo IIS prima della verifica

Sembra che Safari implementa una vecchia versione del standard WebSocket, denominato hybi .

Apparentemente ASP.NET support solo quello definitivo, RFC6455 . Questa è la versione utilizzata dai principali browser.

Utilizzare la libreria SignalR . ASP.NET SignalR è una nuova libreria per gli sviluppatori ASP.NET che rende incredibilmente semplice aggiungere funzionalità web in tempo reale alle tue applicazioni. Qual è la funzionalità "web in tempo reale"? È la capacità di avere il codice sul lato server spingere contenuti ai client connessi come avviene, in tempo reale.