Socket.io教程: koa集成socket.io

Koa集成Socket.io

步骤

类比之前express项目中的使用,有以下几个步骤

  • 安装:$ cnpm i -S koa-socket
  • 引入: const IO = require( 'koa-socket' )
  • 实例化:const io = new IO()
  • 接入koa: io.attach( app )
  • 配置服务端
  • 客户端使用

后端演示

var Koa = require('koa'),
    router = require('koa-router')(),
    views = require('koa-views');

var url = require('url');

const IO = require( 'koa-socket' )
const io = new IO();

var app = new Koa();

io.attach( app );

app.use(views('views',{
    extension:'ejs'  /*应用ejs模板引擎*/
}))

router.get('/',async (ctx)=>{
   await ctx.render('index');
})

app.use(router.routes());   /*启动路由*/
app.use(router.allowedMethods());

app._io.on( 'connection', socket => {
    console.log('建立连接了');

    var groupid = url.parse(socket.request.url,true).query.groupid;   // 获取分组号

    // console.log(groupid);

    socket.join(groupid);  // 加入分组

    // 监听客户端连接
    socket.on('clientMsg',function(data){
        // console.log(data);

        // socket.emit('serverMsg','我是服务器,我给客户端发送信息');  // 单播:单个socket互不影响,谁给我发的信息我回返回给谁

        // app._io.emit('serverMsg','我是服务器,我给客户端发送信息');  // 广播: 所有建立连接的客户端

        // app._io.to(groupid).emit('serverMsg','我是服务器,我给客户端发送信息'); // 发送给指定分组内的用户 通知自己

        socket.broadcast.to(groupid).emit('serverMsg','我是服务器,我给客户端发送信息'); // 通知指定分组用户 不通知自己
    })
})

app.listen(3000);

前端演示

<script src="http://127.0.0.1:3000/socket.io/socket.io.js"></script>

<input type="button" value="发送消息" onclick="sendMsg()"><br>

<script type="text/javascript">
    // 和服务器建立长连接
    var socket = io.connect('http://127.0.0.1:3000?groupid=1');

    // 接收服务器返回的信息
    socket.on('serverMsg',function(data){
        console.log(data);
    });

    function sendMsg() {
        socket.emit('clientMsg','clientMsg');
    }
</script>

相关说明

  • 如果有没有讲到的,参考前文

猜你喜欢

转载自blog.csdn.net/Tyro_java/article/details/106607529