Socket.D v2.5.12

启动服务端

</> markdown

关于可配置细节,参考 “配置类” 的内容。

启动一个简单的服务端

使用具体的传输协议,要导入对应的适配包。比如:sd:ws,要导入 org.noear:socketd-transport-java-websocket

  • 原生接口方式
public class Demo {
    public static void main(String[] args) throws Throwable {
        //创建监听器
        Listener listener = new SimpleListener(){
                    @Override
                    public void onMessage(Session session, Message message) throws IOException {
                        System.out.println(message);
                    }
                };
        
        //启动服务
        Server server = SocketD.createServer("sd:ws")
                .config(c -> c.port(8602).sslContext(null)) //如果有 ssl 需要,添加 sslContext
                .listen(listener)
                .start();
        
        //添加安全停止
        Runtime.getRuntime().addShutdownHook(new Thread(()->{
            RunUtils.runAndTry(server::stop);
        }));
    }
}
  • Ioc 容器管理方式(假代码示意)
@Component
public class ListenerImpl implements Listener { //内置有多个不同功能的监听器,可借用
    ...
}

@Component
public class ServerLifecycle implements LifecycleBean {
    private Server server ;
    
    @Inject
    private Listener listener;
    
    @Override
    public void start() {
        server = SocketD.createServer("sd:ws")
                .config(c -> c.port(8602))
                .listen(listener)
                .start();
    }
    
    @Override
    public void stop() {
        if(server != null) {
            server.stop();
        }
    }
}

附:服务端接口

/**
 * 服务端接口
 */
public interface Server {
    /**
     * 获取台头
     * */
    String getTitle();

    /**
     * 获取配置
     * */
    ServerConfig getConfig();

    /**
     * 配置
     */
    Server config(ServerConfigHandler configHandler);

    /**
     * 监听
     */
    Server listen(Listener listener);

    /**
     * 启动
     */
    Server start() throws IOException;

    /**
     * 停止
     */
    void stop();
}