Создайте сокет TCP / IP в клиентском JavaScript - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть клиент Java, и мне нужно переписать его в (на стороне клиента) JavaScript. Я открываю Java-сокет так:

Сокет сокет = новый сокет ("127.0.0.1", 5015);

Поэтому я попытался использовать websocket в javascript: let socket = новый WebSocket ("http://127.0.0.1:5015");

но здесь у меня ошибка js:

Uncaught DOMException: не удалось создать 'WebSocket':

Схема URL должна быть либо 'ws', либо 'wss'. http не допускается.

Я также пытался использовать протокол 'ws' или 'wss' , но сервер не хотел рукопожатия с такими протоколами.

Есть ли способ создать такое сокет-соединение в клиентском javascript или это определенно запрещено?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Нет, вы не можете установить произвольное TCP-соединение с веб-страницы в любом браузере.

Веб-сокеты принципиально отличаются от TCP-сокетов ... они по сути не связаны. Они представляют собой тонкий слой поверх HTTP вместе с клиентским API, который обеспечивает двунаправленную связь между клиентом Web Socket и сервером, поддерживающим Web Sockets.

Существуют прокси-серверы, которые вы можете запускать, которые позволяют подключаться через них для установления TCP-соединений, но это, конечно, функция сервера, а не то, что вы можете сделать только в браузере.

0 голосов
/ 01 сентября 2018

Открывающее рукопожатие должно быть совместимым с HTTP-интерфейсом. серверное программное обеспечение и посредники, так что один порт может быть используется как HTTP-клиентами, которые общаются с этим сервером, так и WebSocket клиенты разговаривают с этим сервером. Для этого клиент WebSocket рукопожатие - это запрос на обновление HTTP:

    GET /chat HTTP/1.1
    Host: server.example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Origin: http://example.com
    Sec-WebSocket-Protocol: chat, superchat
    Sec-WebSocket-Version: 13

https://tools.ietf.org/html/rfc6455

Сервер WebSockets должен уметь обрабатывать HTTP-запросы!

...