1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/apihub-ws2s

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

WS2S: WebSocket to Socket — сервер, который позволяет использовать сокеты в браузере

WS2S (WebSocket to Socket) — это сервер WebSocket, который обрабатывает сокеты TCP.

Самый простой рабочий процесс может быть таким:

  1. Клиент WebSocket (мы называем его «ws») запрашивает у сервера WS2S создание сокета (мы называем его «s»).
  2. «ws» просит сервер WS2S использовать «s» для отправки данных.
  3. Когда «s» получает данные, сервер WS2S уведомляет об этом «ws» с полученными данными.

Благодаря этому рабочему процессу JavaScript, работающий в браузере, получил возможность использовать сокет.

Клиентский случай

  • Сервер WS2S готов к тестированию по адресу wss://ws2s.feling.net/. Попробуйте его на https://feling.net/wsp/.
  • Онлайн-клиент Redis GUI, основанный на WS2S, доступен по адресу https://feling.net/redis/.

Использование исходного 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.
  • Поле «command» является обязательным. Другие поля зависят от различных команд.
  • Эта вики-страница описывает детали каждой команды.

Ответ Сообщение (мы назвали его ответом), полученное от сервера 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/apihub-ws2s.git
git@api.gitlife.ru:oschina-mirror/apihub-ws2s.git
oschina-mirror
apihub-ws2s
apihub-ws2s
master