Próbuję dowiedzieć się więcej o websocket i jego wewnętrznych implementacjach. Ale wciąż nie można zrozumieć kilku rzeczy. Próbowałem googling dla wyjaśnienia dogłębnego, ale większość z nich po prostu daje przegląd wysokiego poziomu. Oto moje wątpliwościKonfiguracja połączenia z Websocket
1. Według tego, co czytam, serwer websocket (C#/C++ realizacja) domyślnie używa portu 80. Chociaż można użyć dowolnego portu, to korzystne, możemy użyć portu 80 jako wygraliśmy nie mają żadnych problemów z firewallem. Jeśli tak, to w jaki sposób mamy uruchamiać serwer WWW i serwer gniazd internetowych na tym samym porcie (80)?
2. Załóżmy, że serwer websocket działa na porcie 81 i serwer sieciowy jest uruchomiony na porcie 80.
Więc gdy przeglądarka wysyła żądanie HTTP wstępnego uzgadniania (Upgrade: websocket) , ten wniosek wysłany do portu 81. Zgadza się? Jeśli tak, to żądanie (patrz poniżej) nie ma żadnego związku z protokołem HTTP. Ale nadal używamy nagłówków protokołu HTTP. Czemu?
GET /mychat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat Sec-WebSocket-Version: 13 Origin: http://example.com
Dlaczego nie odczuwało używają tego samego interfejsu websocket obecnie wdrażany w większości przeglądarce wydania bezpośrednie połączenie TCP/IP z danego portu, bez rzeczy HTTP?
3. Czy istnieje limit rozmiaru lub pakiet danych/limit bufor dla danych wysłanych/odebranych od klient/serwer? Jeśli tak jest, czy musimy sami tworzyć ramki danych i obsługiwać je?
Czy serwer websocket zawsze musi być oddzielną usługą/procesem? Czy w przyszłości serwer WWW (IIS, apache) będzie obsługiwał hostowanie serwerów gniazd sieci w obrębie przestrzeni procesowej?
Naprawdę dobre pytania! – GameScripting
Pamiętam, że czytałem gdzieś, że następna wersja Windows Server będzie obsługiwać gniazda sieciowe w IIS. Windows 2008 nie może obsługiwać WebSockets ze względu na implementację http.sys. Jeśli znajdę odnośnik, podaję go w odpowiedzi – JoshBerke