Mam aplikację vb.net, która otwiera gniazdo i nasłuchuje.
Muszę komunikować się przez to gniazdo z tą aplikacją przy użyciu javascript działającego w przeglądarce. Oznacza to, że muszę wysłać dane do tego gniazda, aby aplikacja, która nasłuchuje na tym gnieździe, mogła je pobrać, zrobić kilka rzeczy za pomocą niektórych zdalnych wywołań i uzyskać więcej danych i umieścić je z powrotem w gnieździe, którego potrzebuje mój javascript przeczytaj i wydrukuj w przeglądarce.
Próbowałem, socket.io, websockify, ale żaden nie okazał się przydatny.
Stąd pytanie, czy to, co próbuję, jest w ogóle możliwe? Czy istnieje sposób, w jaki javascript działający w przeglądarce może połączyć się z gniazdem tcp i wysłać pewne dane, a następnie nasłuchiwać w gnieździe, aby uzyskać więcej odpowiedzi na dane, a następnie wydrukować je w przeglądarce?
Jeśli to możliwe, czy ktoś może wskazać mi właściwy kierunek, który pomógłby mi w ustaleniu celu.
Odpowiedzi:
Jeśli chodzi o twój problem, obecnie będziesz musiał polegać na XHR lub websockach.
Obecnie żadna popularna przeglądarka nie zaimplementowała takiego surowego interfejsu API dla javascript, który umożliwia tworzenie i uzyskiwanie dostępu do surowych gniazd, ale przygotowywana jest wersja robocza implementacji surowego interfejsu API w JavaScript. Spójrz na te linki:
http://www.w3.org/TR/raw-sockets/
https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket
Chrome obsługuje teraz surowe gniazda TCP i UDP w swoich „eksperymentalnych” interfejsach API. Te funkcje są dostępne tylko dla rozszerzeń i chociaż zostały udokumentowane, są chwilowo ukryte. Powiedziawszy to, niektórzy programiści już tworzą interesujące projekty, takie jak ten klient IRC .
Aby uzyskać dostęp do tego interfejsu API, musisz włączyć flagę eksperymentalną w manifeście swojego rozszerzenia. Korzystanie z gniazd jest dość proste, na przykład:
źródło
Będzie to możliwe za pośrednictwem interfejsu nawigatora, jak pokazano poniżej:
Więcej szczegółów znajduje się w dokumentacji tcp-udp-sockets w3.org.
http://raw-sockets.sysapps.org/#interface-tcpsocket
https://www.w3.org/TR/tcp-udp-sockets/
Inną alternatywą jest użycie Chrome Sockets
Tworzenie połączeń
Wysyłanie danych
Otrzymywanie danych
Możesz również spróbować użyć
HTML5 Web Sockets
(Chociaż nie jest to bezpośrednia komunikacja TCP):http://www.html5rocks.com/en/tutorials/websockets/basics/
Twój serwer musi również nasłuchiwać z serwerem WebSocket, takim jak pywebsocket, alternatywnie możesz napisać własny, jak opisano w Mozilli
źródło
ws2sProjekt ma na celu przeniesienie gniazda do js po stronie przeglądarki. Jest to serwer sieciowy, który przekształca gniazdo sieciowe w gniazdo.
Schemat ideowy ws2s
przykładowy kod:
źródło
Zobacz jsocket . Sam tego nie używałem. Minęło ponad 3 lata od ostatniej aktualizacji (stan na 26.06.2014).
* Wykorzystuje flash :(
Z dokumentacji :
źródło
Rozwiązaniem, którego naprawdę szukasz, są gniazda sieciowe. Jednak w ramach projektu chromium opracowano kilka nowych technologii, które są bezpośrednimi połączeniami TCP chromu TCP
źródło
Aby osiągnąć to, co chcesz, musiałbyś napisać dwie aplikacje (na przykład w Javie lub Pythonie):
Aplikacja Bridge, która znajduje się na komputerze klienta i może obsługiwać zarówno gniazda TCP / IP, jak i WebSockets. Będzie współpracować z danym gniazdem TCP / IP.
Aplikacja po stronie serwera (taka jak JSP / Servlet WAR), która może komunikować się z WebSockets. Zawiera przynajmniej jedną stronę HTML (w razie potrzeby z kodem przetwarzania po stronie serwera), do której przeglądarka ma dostęp.
To powinno tak działać
Uwaga 1: Powyższe kroki są ogromnym uproszczeniem i nie zawierają informacji o obsłudze błędów i żądaniach keepAlive w przypadku, gdy klient rozłączy się przedwcześnie lub serwer musi poinformować klientów, że zamyka / restartuje.
Uwaga 2: W zależności od potrzeb może być możliwe scalenie tych składników w jeden, jeśli dany serwer gniazd TCP / IP (z którym komunikuje się most) znajduje się na tym samym komputerze, co aplikacja serwera.
źródło