Czy Mogę używać WebSocket na portach innych niż 80?

Czy mam używać WebSocket na nie-80 portach? Czy niszczy to cały cel korzystania z istniejącej infrastruktury web / HTTP? I myślę, że nie pasuje już do nazwy WebSocket na nie - 80 portach.

Jeśli używam WebSocket nad innymi portami, dlaczego nie używać bezpośrednio TCP? A może w samym protokole WebSocket są jakieś szczególne korzyści?

A skoro obecny WebSocket handshake jest w formie żądania UPGRADE HTTP, czy to znaczy, że muszę włączyć protokół HTTP na porcie tak że WebSocket handshake można wykonać?

Author: smwikipedia, 2015-02-15

2 answers

Czy mam używać WebSocket na portach innych niż 80? Czy to niszczy cały cel korzystanie z istniejących infrastruktur www / HTTP? I myślę, że już nie pasuje do nazwy WebSocket na nie - 80 portach.

Można uruchomić serwer webSocket na dowolnym porcie, na który pozwala system operacyjny hosta i do którego klient będzie mógł się połączyć.

Jest jednak wiele zalet, jakie daje jego uruchomienie na porcie 80 (lub 443).

  1. Infrastruktura sieciowa jest na ogół już wdrożone i otwarte na porcie 80 dla połączeń wychodzących z miejsc, w których mieszkają klienci (takich jak komputery stacjonarne, urządzenia mobilne itp...) do miejsc, w których mieszkają serwery (np. centra danych). Tak więc, nowe dziury w konfiguracjach firewalla lub routera itp... zazwyczaj nie są wymagane do wdrożenia aplikacji webSocket na porcie 80. Zmiany konfiguracji mogą być wymagane do uruchomienia na różnych portach. Na przykład wiele dużych sieci korporacyjnych jest bardzo wybrednych w kwestii tego, jakie porty mogą być połączeniami wychodzącymi wykonane i są skonfigurowane tylko dla pewnych standardowych i oczekiwanych zachowań. Wybranie niestandardowego portu dla połączenia webSocket może nie być dozwolone z niektórych sieci korporacyjnych. Jest to duży powód, aby użyć portu 80 (maksymalna interoperacyjność z sieci prywatnych, które mają zablokowane konfiguracje).

  2. Wiele aplikacji webSocket uruchamianych z przeglądarki chce wykorzystać istniejącą infrastrukturę zabezpieczeń / logowania/auth już używaną na porcie 80 dla strony hosta. Za pomocą ta sama infrastruktura do sprawdzania uwierzytelniania połączenia webSocket może być prostsza, jeśli wszystko jest na tym samym porcie.

  3. Niektóre infrastruktury serwerowe dla webSockets (takie jak socket.io w węźle.js) używają połączonej infrastruktury serwerowej (pojedynczy proces, jeden odbiornik) do obsługi zarówno żądań HTTP, jak i websocketów. Jest to prostsze, jeśli oba znajdują się na tym samym porcie.


Jeśli używam WebSocket nad innymi portami, dlaczego nie używać bezpośrednio TCP? Lub czy w samym protokole WebSocket są jakieś szczególne korzyści?

Protokół webSocket został pierwotnie zdefiniowany do pracy z przeglądarki na serwer. Nie ma ogólnego dostępu TCP z przeglądarki, więc jeśli chcesz trwałe gniazdo bez niestandardowych dodatków do przeglądarki, to webSocket jest tym, co jest oferowane. W porównaniu do zwykłego połączenia TCP, protokół webSocket oferuje możliwość korzystania z uwierzytelniania HTTP i plików cookie, standardowego sposobu działania na poziomie aplikacji i end-to-end keep-alive ping / pong (TCP oferuje hop-level keep-alive, ale nie end-to-end), wbudowany protokół kadrowania (musisz zaprojektować własne formaty pakietów w TCP) i wiele bibliotek, które obsługują te funkcje wyższego poziomu. Zasadniczo webSocket działa na wyższym poziomie niż TCP (używając TCP pod pokrywami) i oferuje więcej wbudowanych funkcji, które większość ludzi uważa za przydatne. Na przykład, jeśli używasz TCP, jedną z pierwszych rzeczy, które musisz zrobić, to uzyskać lub zaprojektować protokół (sposób wyrażania swojego danych). Jest to już wbudowane w webSocket.

A ponieważ obecny WebSocket handshake jest w formie Upgrade HTTP request, czy to znaczy, że muszę włączyć protokół HTTP na porcie tak że WebSocket handshake można wykonać?

Musisz mieć serwer HTTP uruchomiony na porcie, na którym chcesz używać webSocket, ponieważ wszystkie żądania webSocket zaczynają się od żądania HTTP. Nie musiałby być mocno funkcjonalny serwer HTTP, ale musi obsługiwać początkowe żądanie HTTP.

 62
Author: jfriend00,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-25 05:39:23

Moim zdaniem tak, możesz. 80 jest portem domyślnym, ale możesz go zmienić na dowolny.

 0
Author: Jeremy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-15 04:08:40