Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:java:java_socket.io

< Java

Java Socket.IO könyvtár

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.

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