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

OSCHINA-MIRROR/sanluan-websocket-study

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

WebSocket-study

WebSocket-study — это проект для изучения WebSocket, основанный на NIO. Он включает в себя сервер и клиент на основе сокетов, сервер и клиент WebSocket, сервис двусторонней синхронизации файлов, а также контейнер для нескольких приложений WebSocket.

Уже реализованы следующие функции:

  1. NIO server.
  2. NIO client.
  3. WebSocket server.
  4. WebSocket client.
  5. Двусторонняя синхронизация файлов.
  6. Контейнер для нескольких приложений WebSocket.
  7. NIO client SSL.
  8. WSS WebSocket client.

В процессе разработки находятся:

  1. NIO server SSL.
  2. WSS WebSocket server.

Пример реализации сервера WebSocket:

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.microprofile.websocket.WebSocketServer;
import org.microprofile.websocket.handler.MessageHandler;
import org.microprofile.websocket.handler.Session;

public class WebSocketServerTest implements MessageHandler {
    protected static final Log log = LogFactory.getLog(WebSocketServerTest.class);
    Map<String, Session> map = new HashMap<>();

    public static void main(String[] args) throws InterruptedException {
        try {
            WebSocketServer ws = new WebSocketServer(1000, 20, new WebSocketServerTest(), 1000);
            log.info("Запуск...");
            ws.asyncListen();
            Thread.sleep(1000 * 1000);
            ws.close();
        } catch (IOException e) {
        }
    }

    @Override
    public void onMessage(byte[] message, Session session) throws IOException {
        onMessage(new String(message), session);
    }

    @Override
    public void onMessage(String message, Session session) throws IOException {
        session.sendString("receive:" + message);
        log.info(message);
    }

    @Override
    public void onOpen(Session session) throws IOException {
        session.sendString("welcome");
        map.put(session.getId(), session);
        log.info(session.getId() + "\t connected!");
    }

    @Override
    public void onClose(Session session) throws IOException {
        session.sendString("bye");
        map.remove(session.getId());
        log.info(session.getId() + "\t closed!");
    }
}

Пример реализации клиента WebSocket:

import java.io.IOException;
import java.net.URISyntaxException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.microprofile.websocket.WebSocketClient;
import org.microprofile.websocket.handler.MessageHandler;
import org.microprofile.websocket.handler.Session;

public class WebSocketClientTest implements MessageHandler {
    protected static final Log log = LogFactory.getLog(WebSocketClientTest.class);

    public static void main(String[] args) throws InterruptedException, URISyntaxException {
        try {
            WebSocketClient ws = new WebSocketClient("ws://127.0.0.1/message/test/", new WebSocketClientTest());
            log.info("Запуск...");
            ws.asyncListen();
            while (!ws.isOpen()) {
                Thread.sleep(100);
            }
            ws.sendString("u:");
            Thread.sleep(10000);
            ws.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (KeyManagementException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onMessage(byte[] message, Session session) throws IOException {
        onMessage(new String(message), session);
    }

    @Override
    public void onMessage(String message, Session session) throws IOException {
        log.info("receive:" + message);
    }

    @Override
    public void onOpen(Session session) throws IOException {
        log.info(session.getId() + "\t connected!");
    }

    @Override
    public void onClose(Session session) throws IOException {
        log.info(session.getId() + "\t closed!");
    }
}

Комментарии ( 0 )

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

Введение

Изучение реализации протокола WebSocket. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

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

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