websocket总结

socket.js

// 原生node编写
// var http = require('http');
// var fs = require('fs');
// var server = http.createServer((req,res)=>{
//     if(req.url=='/'){
//             fs.readFile("./index.html",(err,data)=>{
//                 res.end(data)
//         })
//     }
// })
// var io = require('socket.io')(server);
// io.on('connection',function (socket) {
//     console.log('1个客户端连接了');
//     socket.on('from-client',(data)=>{
//         console.log(data,'在服务端接收啦');
//         // socket.emit('from-server',data + '要发送到客户端');//机器人原理
//         io.emit('from-server',data + '要发送到客户端');//群聊原理
//     })
//
// })
// server.listen(3000,'localhost')
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
app.set('view engine','ejs');
app.use(express.static('public'))
app.get('/',(req,res)=>{
    res.render('space');
})
app.get('/news',function(req,res){
    res.send('news');

})
server.listen(8080)

io.of('/red').on('connection',function (socket) {
    var room ;
    socket.on('room',(data)=>{
        room = data;
        console.log(room,'red')
        socket.join(room)
    })
    socket.on('message',(msg)=>{
        console.log(msg,'red msg');
        console.log(room,'ddddd')
        socket.emit('message',msg+'too')//只向自己发消息
        socket.broadcast.to(room).emit('message',msg+'too')//除自己以外的其他人
        io.emit('message',msg+'too')//房间里的所有人发消息包含自己
    })

})
io.of('/green').on('connection',function (socket) {
    var room;
    socket.on('room',(data)=>{
        room = data;
        console.log(room,'green')
        socket.join(room)
    })
    socket.on('message',(msg)=>{
        console.log(msg,'green msg');
        socket.emit('message',msg+'too')//只向自己发消息
        socket.broadcast.to(room).emit('message',msg+'too')//除自己以外的其他人
        io.emit('message',msg+'too')//房间里的所有人发消息包含自己
    })
})

 

space.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="radio" name="space"  value="红房间" checked>红房间
<br/>
<input type="radio" name="space" value="绿房间">绿房间
<br/>
<input type="button" value="华山派" id="huaBtn" >
<input type="button" value="少林派" id="shaoBtn">
<input type="text" id="inVal">
<button id="btn">发送</button>
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script type="text/javascript">
    var redSocket = io.connect('http://localhost:8080/red');
        redSocket.on('connect',function () {
            console.log('红空间客户端和服务端建立连接')
        })
        redSocket.on('message',(msg)=>{
            console.log(msg)
        })
    var greenSocket = io.connect('http://localhost:8080/green');
        greenSocket.on('connect',function () {
            console.log('绿空间客户端和服务端建立连接')
        })
        greenSocket.on('message',(msg)=>{
            console.log(msg)
        })
    var huaBtn = document.getElementById('huaBtn');//华山派
    var shaoBtn = document.getElementById('shaoBtn');//少林派
    var sendBtn = document.getElementById('btn');//发送按钮
    var spaces= document.getElementsByName('space');

    huaBtn.onclick = function () {
        console.log('进入红房子的华山派');
        redSocket.emit('room','hua')
    }
    shaoBtn.onclick = function () {
        console.log('进入红房子的少林派');
        redSocket.emit('room','shao')
    }
    for(var i = 0;i<spaces.length;i++) {
        spaces[i].onclick = function () {
            console.log(huaBtn)
            if(this.value=='红房间'){
                huaBtn.onclick = function () {
                    console.log('进入红房子的华山派');
                    redSocket.emit('room','hua')
                }
                shaoBtn.onclick = function () {
                    console.log('进入红房子的少林派');
                    redSocket.emit('room','shao')
                }
            }else if(this.value=='绿房间'){
                huaBtn.onclick = function () {
                    console.log('进入绿房子的华山派');
                    greenSocket.emit('room','hua')
                }
                shaoBtn.onclick = function () {
                    console.log('进入绿房子的少林派');
                    greenSocket.emit('room','shao')
                }
            }
        }
    }
    sendBtn.onclick = function () {
        var inputVal = document.getElementById('inVal');
        for(var i = 0;i<spaces.length;i++){
            if(spaces[i].value=='红房间'&&spaces[i].checked){
                redSocket.emit('message',inputVal.value)

            }else if(spaces[i].value=='绿房间'&&spaces[i].checked){
                greenSocket.emit('message',inputVal.value)
            }
        }
    }
</script>
</body>
</html>
3.1 控件基本方法(method) 3.1.1 S_InitListen 函数原型 :SHORT S_InitListen(SHORT m_Port) 功能 : 建立服务器端侦听端口 参数 : m_Port 服务器侦听端口号 返回值: :0:成功 1:失败 3.1.2 S_OnSendMsg 函数原型 :SHORT S_OnSendMsg(LPCTSTR m_ip, LPCTSTR m_Msg); 功能 : 单条消息发送 参数 : m_ip 接收端Ip地址 m_Msg 消息信息 返回值: :0 发送成功 1 发送失败 3.1.3 S_OnPushMsg 函数原型 :SHORT S_OnPushMsg(LPCTSTR m_Msg); 功能 : 群发消息 参数 : m_Msg 消息信息 返回值: :0 成功 1:失败 3.1.4 C_OnConnect 函数原型 :SHORT C_OnConnect(LPCTSTR m_ip, SHORT m_port); 功能 : 客户端连接服务器 参数 : m_ip 服务器端ip地址 参数 : m_port 端口号 返回值: :0 成功 1失败 3.1.5 C_OnSendMsg 函数原型 :SHORT C_OnSendMsg(LPCTSTR m_Msg); 功能 : 发送消息 参数 : m_Msg 消息信息 返回值: :0 成功 1失败 3.2 控件事件(event) 3.2.1 FireReceiveSocketMsg 原型 :void FireReceivedSocketMsg(SHORT m_Event, LPCTSTR m_Msg) 功能 :客户端消息 参数 : m_Event 事件类型 1:客户端消息事件 2:客户端通讯错误事件 参数 : m_Msg 事件信息 3.2.2 FireServerReceiveSocketMsg 原型 :void FireServerReceivedSocketMsgWinsocketocxctrl(SHORT m_Event, LPCTSTR m_Msg , LPCTSTR m_Address) 功能 :服务器端消息 参数 : m_Event 事件类型 1:服务器端消息事件 2: 服务器通讯错误事件 3:客户端连接到服务器通知事件(返回客户端ip) 4:客户端断开服务器通知事件(返回客户端ip) 参数 : m_Msg 事件信息 参数 : m_ Address 客户端ip地址 .4 备注 通讯日志存储在C:\ _SOCKET.LOG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值