WS2S: WebSocket to Socket — сервер, который позволяет использовать сокеты в браузере
WS2S (WebSocket to Socket) — это сервер WebSocket, который обрабатывает сокеты TCP.
Самый простой рабочий процесс может быть таким:
Благодаря этому рабочему процессу JavaScript, работающий в браузере, получил возможность использовать сокет.
Клиентский случай
wss://ws2s.feling.net/
. Попробуйте его на https://feling.net/wsp/.Использование исходного JavaScript
var ws = new WebSocket("wss://ws2s.feling.net/")
ws.onmessage = (event) => {
console.log("onmessage: ", event.data)
}
ws.onopen = () => {
console.log("onopen")
ws.send(JSON.stringify(
{
command: "connect",
host: "feling.net",
port: 80
}
))
ws.send(JSON.stringify(
{
command: "send",
data: "GET / HTTP/1.1\r\nHost: feling.net\r\nConnection: close\r\n\r\n"
}
))
}
ws.onclose = () => {
console.log("onclose")
}
Использование ws2s.js
var socket = new WS2S("wss://ws2s.feling.net/").newSocket()
$('#connect-button').bind("click", () => {
socket.connect("feling.net", 80)
})
$('#send-button').bind("click", () => {
socket.send("GET / HTTP/1.1\r\nHost: feling.net\r\nConnection: close\r\n\r\n")
})
socket.onRecv = (data) => {
console.log('onRecv', data)
}
Установка WS2S работает с py2 и py3 на Linux и OS X. Пользователи Windows могут попробовать подсистему Windows для Linux (WSL). Рекомендуется установить из GitHub:
pip install git+https://github.com/playay/ws2s --upgrade
Также можно установить WS2S из PyPI:
pip install ws2s-python --upgrade
После установки WS2S команда ws2sd
может использоваться в оболочке. При выполнении команды ws2sd
будет создан каталог ~/.ws2s/.
Конфигурация
Файл конфигурации хранится в ~/.ws2s/config.json
. Измените его, затем выполните команду ws2sd restart
.
Запуск при загрузке См. эту вики-страницу.
Протокол Запрос Вот несколько примеров запросов:
{
"command": "connect",
"host":"127.0.0.1",
"port":80
}
{
"command": "send",
"data":"GET / HTTP/1.1\r\nHost: 127.0.0.1\r\nConnection: close\r\n\r\n"
}
Можно заметить следующее:
Ответ Сообщение (мы назвали его ответом), полученное от сервера WS2S, также представляет собой строку формата JSON:
{
"success": true,
"code": -1,
"message": "recv data",
"data": "JDINCk9LDQo="
}
Как видно из примера выше:
— поле «message» предназначено для человека;
— полем «success» можно пренебречь.
Когда поле «code» равно -1, представлено поле «data». Это означает, что сервер WS2S получил данные от однорангового узла. Поле «data» представляет собой строку base64, представляющую массив байтов.
Когда поле «code» равно 0, обычно это означает, что сервер WS2S успешно завершил последнюю команду.
Когда поле «code» больше 0, это означает, что что-то не так:
— когда «code» = 1: неизвестное исключение, вы можете отправить проблему в WS2S;
— когда «code» = 2: ConnectionRefusedError возникает, когда сервер WS2S пытается подключиться к указанному хосту:порту;
— когда «code» = 3: IllegalSocketState, просто повторно отправьте запрос «connect», например: {"command":"connect","host":"127.0.0.1","port":80}. Обычно это означает, что вы хотите, чтобы ws2s_server подключился к 127.0.0.1, но ws2s_server отказался это делать. Эту функцию можно настроить в ~/.ws2s/config.json
.
Когда «code» = 5: соединение сокета было закрыто сервером сокетов, к которому вы подключились.
Когда «code» = 6: не удалось открыть SSH-туннель.
dev
pipenv shell
python setup.py bdist_wheel python setup.py sdist twine upload dist/*
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )