WebSocket-study — это проект для изучения WebSocket, основанный на NIO. Он включает в себя сервер и клиент на основе сокетов, сервер и клиент WebSocket, сервис двусторонней синхронизации файлов, а также контейнер для нескольких приложений WebSocket.
Уже реализованы следующие функции:
В процессе разработки находятся:
Пример реализации сервера 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 )