美文网首页
初步接触socketIO服务

初步接触socketIO服务

作者: 沉寂的是心 | 来源:发表于2017-04-26 17:24 被阅读0次

一、配置socketIO服务

@Component
public class Server {
    
    @Value("${wss.server.host}")//socket服务地址
    private String host;
    @Value("${wss.server.port}")//socket服务端口
    private Integer port;
    @Bean
    private SocketIOServer socketIOServer() {
        Configuration config = new Configuration();
        config.setHostname(host);
        config.setPort(port);
        final SocketIOServer server = new SocketIOServer(config);  
        return server;
    }
    @Bean
    private SpringAnnotationScanner springAnnotationScanner(SocketIOServer socketServer) {  
        return new SpringAnnotationScanner(socketServer);
    }
    
}

配置好服务之后需要启动
二、启动socketIO服务

@Component
public class ServerRunner implements CommandLineRunner {
    private final LogHandler logger = new LogHandler(this.getClass().getName());
    private final SocketIOServer server;
    @Autowired 
    public ServerRunner(SocketIOServer server) {  
        this.server = server;  
    }
    @Override
    public void run(String... args) throws Exception {
        logger.info("~~~~socket-IO  server启动~~~~");
        server.start();
    }
}

这样socketIO的服务就已经启动
三、socketio消息交互

@EnableScheduling
@Component
public class MessageEventHandler {
    //客户端存储
    private static List<SocketIOClient> clients = new ArrayList<SocketIOClient>();// 用于保存所有客户端
    private final LogHandler logger = new LogHandler(this.getClass().getName());
    @Autowired
    private IStateDisplayService displayService;

    //添加connect事件,当客户端发起连接时调用
    @OnConnect
    private void messageHandler(SocketIOClient client) {
        logger.info("connected:SessionId=" + client.getSessionId());
        //存储监听到的客户端
        clients.add(client);
    }

    /**
     * 向socket客户端发送消息
     *
     * @param resultMap
     */
    public void sendMsg(String key, Map<String, Object> resultMap) {
        clients.removeIf(client -> !client.isChannelOpen());//删除已断开的客户端
        for (SocketIOClient client : clients) {
            client.sendEvent(key, resultMap);//向客户端发送数据
        }
    }

    /**
     * 获取机器状态
     *以机器这个例子展示交互
     */
    @Scheduled(fixedRate = 10000)
    public void sendMachine() {
        Map<String, Object> resultMap = displayService.getMachineState();
        sendMsg("bvMachineState", resultMap);
    }

相关文章

  • 初步接触socketIO服务

    一、配置socketIO服务 配置好服务之后需要启动二、启动socketIO服务 这样socketIO的服务就已经...

  • autojs双向通信

    牙叔教程 简单易学 使用场景 socketIO socketIO SocketIO是在客户端和服务端之间建立的双向...

  • 【干货】Flask-SocketIO官方文档翻译

    Flask-SocketIO 帮助Flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官...

  • Netty学习二. NIO服务端

    NIO好处: 一个服务端可以供多个客户端连接.下图展示SocketIO和NIO的比喻: SocketIO图示如下:...

  • Promise初步接触

  • ARKit初步接触

    苹果2017WWDC发布了ARKit,看到发布会上的AR体验视频,还是觉得比较惊艳的,于是最近就跟新了Xcode9...

  • Ajax 初步接触

    1.Ajax是什么?有什么作用? 看了一下MDN的介绍,大致的了解了。 Ajax全称是 Asynchron...

  • 初步接触 ES

    w3school ruanyifeng infoq ES6 = ECMAscript , JavaScript是 ...

  • Block初步接触

    OC 日常笔记碎片知识 Block基本概念Block是iOS中一种比较特殊的数据类型. 苹果推荐使用的数据类型,应...

  • 初步接触ssh

    2017.2.6到公司第一周,装了环境,了解了项目团队,接触了项目部分代码,学习了新知识。 任务是:将数据库中指定...

网友评论

      本文标题:初步接触socketIO服务

      本文链接:https://www.haomeiwen.com/subject/gbqwzttx.html