webSocket 开发流程

397 阅读2分钟

webSocket 开发流程

浏览器自带对象WebSocket
 #由于 自带对象WebSocket工作复杂/使用第三方
 #WebSocket库来实现此功能
 #库名 socket.io
 (1)下载socket.io服务器端第三方模块
  npm i socket.io
   下载socket.io 客户端文件
    socket.io.js
    下载地址:
    https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js
 (2)先开发服务器端程序
   2.1:创建服务器对象
   2.2:创建websocket.io对象
   2.3:监听端口 3000
   2.4:为io对象绑定事件 connection 客户端连接

app.js

// 实现多对多聊天室
// 1创建服务器对象
var app=require("http").createServer();
// 2创建io对象
var io=require("socket.io")(app)
// 3监听端口3000
app.listen(3000);
// 4为io对象绑定客户端连接事件connection
//客户端程序连接服务器
io.on("connection",(socket)=>{
    // console.log("有客户连接到服务器");
    // console.log(socket.id)
    // 接收客户端发送消息
    // 绑定事件message
    socket.on("message",(data)=>{
        console.log(data);
        // socket.emit("server","有什么可以帮到您?")
        io.emit("list","明天开始大减价")
    })
})

chat_app.js

// 多对多服务器程序
// 创建一个服务对象
var app=require("http").createServer();
// 创建一个io对象
var io=require("socket.io")(app)
// 绑定监听服务器端口3000
app.listen(3000);
// 创建变量clientCount 客户端数量
var clientCount=0;
// 为io对象绑定事件connection
io.on("connection",(socket)=>{
    console.log("有客户连接服务器")
    // clientCount加一操作
    clientCount++;
    // 创建变量nickname用户编号
    var nickname="user:"+clientCount;
    // 广播有新人加入enter
    io.emit("enter",nickname+"comes in");
    // 接收客户发送来聊天消息,广播
    socket.on("message",(data)=>{
        // console.log("客户端发来消息"+data)
         // 接收客户离开    广播   
         io.emit("list",nickname+"says:"+data)
    })
     //10:接收客户离开广播 默认:客户离开
   //关闭浏览器发送事件
  socket.on("disconnect",(data)=>{
    io.emit("leave",nickname+" leave");
 })   
   
})
 (3)开发客户端程序
   3.1:创建socket对象并且连接websocket服务器
   index.html
<script>
        //客户端连接服务器
        //发送连接请求并且触发connection连接
        var clientSocket=io("ws://127.0.0.1:3000") 
        // 4触发message事件发送消息
        clientSocket.emit("message","hello 服务端")
        // 5绑定事件serve接收服务器回复消息
        clientSocket.on("server",(data)=>{
            console.log(data)
        })
        // 6绑定广播事件
        clientSocket.on("list",(data)=>{
            console.log(data);
        })
    </script>

chart_index.html

//  连接到聊天服务器

var Socket=io("ws://127.0.0.1:3000") 
// 绑定事件 enter 有新人进入事件
 Socket.on("enter",(data)=>{
     //2.1创建元素div
     var div=document.createElement("div");
    //  2.2 将data保存到div中间
    div.innerHTML=data;
    // 2.3添加文件样式red
    div.style.color="#f00";
    // 2.4 将元素追加msg最后一个子元素
    var msg=document.getElementById("msg")
    msg.appendChild(div);
 })
//  获取发送按钮和输入框
var btn=document.getElementById("sendBtn");
var txt=document.getElementById("sentTxt");
// 为按钮绑定点击事件
btn.onclick=function(){
    // 触发事件发消息
    Socket.emit("message",txt.value)
}
// 4接收其他聊友发来的消息 
Socket.on("list",(data)=>{
    // 创建div
    var div=document.createElement("div")
    // 将聊友聊天内容保存
    div.innerHTML=data;
    // 添加样式,蓝色
    div.style.color="#00f"
    // 添加msg
    var msg=document.getElementById("msg");
    msg.appendChild(div);
})
// 绑定事件 用户离开了
Socket.on("leave",(data)=>{
    // 创建div
    var div=document.createElement("div");
    div.innerHTML=data;
    div.style.color="#0f0"
    var msg=document.getElementById("msg");
    msg.appendChild(div)
 
})