您的位置 首页 php

springboot集成netty-socketio实现websocket

springboot中消息推送系统设计与实现 这里采用的是springboot+netty-socketio+rabbitmq

消息中心设计

1.服务端消息推送,采用netty-socketio开源框架,这里选择的是netty-socketio:1.7.17 版本 注意:选择的版本要注意netty的版本一致问题,其他框架如果也用了netty,一定要保持netty版本一致,否则会影响websocket服务

2.netty-socketio多节点部署问题: 如果采用默认http请求进行ws协议升级方式,在多节点部署模式下,负载均衡策略容易导致多次连接不一致问题。 这里可以采用ws的方式只请求连接一次

3.服务端多节点部署,采用rabbitmq的广播模式,多个部署节点监听广播

4.websocket服务端口注册zk注册中心,采用的springcloud ZookeeperServiceRegistry注册器注册端口(注意:这里只是做到端口替换)

前端页面demo

 <!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>NETTY SOCKET/.IO DEMO</title>
    <base>
    <script src="#34;></script>
    <script src="#34;></script>
    <style>
        body {
            padding: 20px;
        }
        #console {
            height: 450px;
            overflow: auto;
        }
        .username-msg {
            color: orange;
        }
        .connect-msg {
            color: green;
        }
        .disconnect-msg {
            color: red;
        }
    </style>
</head>

<body>
<div id="console" class="well"></div>
</body>
<script type="text/javascript">
    var socket;
    connect();

    function connect() {
        // 此处userId为用户标识,后面推送时使用
        var socket = io.connect('#39;, {
            'path': '/socket.io',
            'reconnection delay' : 2000,
            'force new connection' : true,
            'transports' : ['websocket']
        });

        socket.on('message', function(data) {
            // here is your handler on messages from server
            console.log(data)
        });

        socket.on('chatevent', function(data) {
            // here is your handler on chatevent from server
            console.log(data)
        });

        socket.on('connect', function() {
            // connection established, now we can send an objects

            // send json-object to server
            // '@class' property should be defined and should
            // equals to full class name.
            var obj = { '@class' : 'com.sample.SomeClass'
            }
            socket.json.send(obj);

            // send event-object to server
            // '@class' property is NOT necessary in this case
            var event = {

            }
            socket.emit('someevent', event);

        });
    }
</script>
</html>


  

文章来源:智云一二三科技

文章标题:springboot集成netty-socketio实现websocket

文章地址:https://www.zhihuclub.com/80176.shtml

关于作者: 智云科技

热门文章

网站地图