socket.io基础学习总结

603 阅读1分钟

安装

npm install socket.io

Express

var app = require('express')()


var serve = require('http').Server(app)
var io = require('socket.io')(serve)

server.listen(3000,127.0.0.1)

//socket.io方法
io.on('connection',function(sockets){
    //建立连接
    
})

服务端

1.获取客户端数据

io.on('connection',function(socket){
    console.log('建立连接')
    
    //接收数据
    socket.on('adddata',function(data){
    
    })
    //主动发送数据(谁发的,发给谁)
    socket.emit('removes',{
        
    })
    
    // 主动发送数据(群发)
    io.emit('removes',{
        
    })
})

2.分组广播

io.on('connection',function(socket){
    console.log('建立连接')
    //获取连接地址
    // socket.request.url  可以获取房间号roomid
    socket.join(roomid)  //加入房间  
    socket.leave(roomid)  //离开房间
    socket.on('add',function(data){
        //广播给 房间内的用户
        io.to(roomid).emit('addCart','abchdhde')
        
        //广播给 房间内的用户(不包括自己)
        socket.broadcast.to(roomid).emit('addCart','abchdhde')
    })
})

//var url = require('url')
// url.parse('http:127.0.0.1',true) 解析url

//客户端需要传入房间号
var socket = io.connect('http://127.0.0.1:3000?roomid=1')

客户端

1.给服务器发送数据

//客户端引入 http://127.0.0.1:3000/socket.io/socket.io.js

socket.emit('adddata',{ my: 'data'})

2.接收服务器返回的数据

var socket = io('http://127.0.0.1:3000')

socket.on('news',function(data){

})

服务器API速查

        //socket.io方法
        io.on('connection',function(sockets){
            // console.log('建立连接'); 
            sockets.on('newsMsg',function({userId,msg}){
                console.log(userId);
                sockets.emit(userId,msg)
            })
            console.log(sockets.id);
            sockets.emit('oldmsg','这是一条服务端消息')

        })
        //给指定的客户端发送消息
        io.sockets.socket(socketid).emit('String', data)


        // 连接成功,开始监听
        sockets.on('message',function(event){ 
            console.log('Received message from client!',event)
        })

       //  连接失败
        sockets.on('disconnect',function(){ 
            clearInterval(interval)
            console.log('Server has disconnected')
          })

        // 广播给当前房间除了自己以外的所有人 

        socket.broadcast.to(roomId).emit('msg', {   
            // take somethings
        })

        // 广播给当前房间中自己

        socket.emit('msg', {
            // take somethings
        })


        // 广播给当前房间的所有人 

        socket.to(roomId).emit('msg', { 
            // take somethings
        })