oktatas:programozas:java:java_socket.io
Tartalomjegyzék
Java Socket.IO könyvtár
- Szerző: Sallai András
- Copyright © 2025, Sallai András
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
A Socket.IO
A Socket.IO elérhető Node.js és Java könyvtárként is. Így írhatunk egy szervert Node.js könyvtárral, klienst pedig Java vagy JavaFX-szel.
- https://socket.io/ (2025)
Java függőség
Kliens
A Socket.IO könyvtár elérhetősége:
Maven függőségként:
<dependency> <groupId>io.socket</groupId> <artifactId>socket.io-client</artifactId> <version>2.1.1</version> </dependency>
Szerver Java nyelven
Ha szervert szeretnénk írni, Java nyelven könyvtár:
Moduláris programok
Moduláris programoknál mint a JavaFX automatikus modulnév feloldást használunk:
requires socket.io.client; requires engine.io.client;
Ez persze figyelmeztetést generál, miszerint nem stabil az automatikus névfeloldás.
Egyszerű kliens
Függőség:
<dependency> <groupId>io.socket</groupId> <artifactId>socket.io-client</artifactId> <version>2.1.1</version> </dependency>
- Client.java
package hu.szit; import io.socket.client.IO; import io.socket.client.Socket; import io.socket.emitter.Emitter; public class Client { private Socket socket; public Client(String serverUrl) { try { socket = IO.socket(serverUrl); socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { @Override public void call(Object... args) { System.out.println("Connected to server"); } }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() { @Override public void call(Object... args) { System.out.println("Disconnected from server"); } }).on("chat message", new Emitter.Listener() { @Override public void call(Object... args) { String msg = (String) args[0]; System.out.println("Received message: " + msg); } }).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() { @Override public void call(Object... args) { System.out.println("Connection error"); System.out.println(args[0]); } }); socket.connect(); } catch (Exception e) { e.printStackTrace(); } } public void sendMessage(String message) { if (socket != null && socket.connected()) { socket.emit("chat message", message); } else { System.out.println("Socket is not connected. Unable to send message."); } } }
Netty-socketio
A pom.xml részlete:
<dependencies> <dependency> <groupId>com.corundumstudio.socketio</groupId> <artifactId>netty-socketio</artifactId> <version>2.0.12</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.1.0-alpha1</version> </dependency> </dependencies>
Szerver Netty-socketio-val:
- src/main/lan/zold/Server.java
package lan.zold; import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.listener.ConnectListener; import com.corundumstudio.socketio.listener.DataListener; import com.corundumstudio.socketio.listener.DisconnectListener; public class Server { private SocketIOServer socketIoServer; public Server(SocketIOServer socketIoServer) { this.socketIoServer = socketIoServer; socketIoServer.addConnectListener(onConnected()); socketIoServer.addDisconnectListener(onDisconnected()); socketIoServer.addEventListener( "chat message", String.class, sendMessage() ); } private DataListener<String> sendMessage() { return (client, data, ackSender) -> { System.out.println("Received message: " + data); client.sendEvent("chat message", data); }; } private ConnectListener onConnected() { return (client) -> { System.out.println("Client connected"); }; } private DisconnectListener onDisconnected() { return (client) -> { System.out.println("Client disconnected"); }; } public void start() { socketIoServer.start(); } public void stop() { socketIoServer.stop(); } }
- src/main/lan/zold/ServerHandler.java
package lan.zold; import com.corundumstudio.socketio.Configuration; import com.corundumstudio.socketio.SocketIOServer; public class ServerHandler { public ServerHandler() { Configuration config = new Configuration(); config.setHostname("localhost"); config.setPort(3000); SocketIOServer socketIoServer = new SocketIOServer(config); Server server = new Server(socketIoServer); server.start(); } }
- src/main/lan/zold/Main.java
package lan.zold; public class Main { public static void main(String[] args) { new ServerHandler(); } }
Linkek
oktatas/programozas/java/java_socket.io.txt · Utolsó módosítás: 2025/01/10 13:41 szerkesztette: admin