Nodejs中实现实时通讯的socket.io模块

一、websocket实现了实时监听
  • 在Nodejs中socket.io对websocket进行了封装
  • socket.io 是基于 Websocket 的Client-Server 实时通信库。
  • socket.io类库不但可以相互发送消息,而且还可以通过socket端口对象的emit方法互相发送事件.
二、实现步骤
2.1、服务端(Server)
  • 1、下载socket.io第三方包—加载记得带双引号(出过错)
  • 2、加载socket.io第三包
  • 3、第一步:建立服务监听
var a1=app.listen(1000,()=>{
    console.log("服务器已启动:http://localhost:1000")
})

// 第一步:建立服务监听
const io  = require('socket.io')(a1);
  • 第二步:时刻监听客户端的请求io.on(,),回调函数是客户端传递的信息
  • 第三步:并接收后给客户端返回数据io.emit(,)

connection是建立连接的事件

io.on('connection',(socket)=>{
    socket.on('sentToServer',(message)=>{
        console.log(message);
        io.emit('sendToClient',{
            message:"你好我是服务端我想和你聊天"
        })
    })
})
  • 断开连接

disconnect是断开连接的事件

// 监听连接断开事件
io.on("disconnect", () => {
    console.log("连接已断开...");
});
2.2、客服端(Client)
  • 第一步:导入socket.io的包
<script src="socket.io.js"></script>
  • 第二步:与服务器建立连接
const socket = io.connect("http://localhost:1000");
  • 然后就是向服务端发送数据socket.emit()
document.querySelectorAll('button')[0].addEventListener('click',function () {
  console.log(1);
    socket.emit("sentToServer", {
        message:'你好!我们可以聊天了,我是客户端'
    });
});
  • 第三步://第三步:获取服务端发送过来的信息----可以不断接收
socket.on("sendToClient", message => {

    console.log(message);
});
三、完整代码
  • html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/socket.io.js"></script>
</head>
<body>
<button id="send">发送消息到服务器</button>
<div>
    <p>服务器返回的消息是:</p>
    <i id="msg"></i>
</div>
<script src="socket.io.js"></script>
<script>
    //第一步: 1. 与服务器端建立连接
    const socket = io.connect("http://localhost:1000");

    // 第二步:向服务器端发送信息----可以不断发送
    //console.log( document.querySelectorAll('p')[0]);
    document.querySelectorAll('button')[0].addEventListener('click',function () {
        socket.emit("sentToServer", {
            message:'你好!我们可以聊天了,我是客户端'
        });
    });
    //
    // //第三步:获取服务端发送过来的信息----可以不断接收
    socket.on("sendToClient", message => {

        console.log(message);
    });
</script>

</body>
</html>
  • index.js
const express=require('express');
const app=express();
var a1=app.listen(1000,()=>{
    console.log("服务器已启动:http://localhost:1000")
})

// 第一步:建立服务监听
const io  = require('socket.io')(a1);
//第二步:监听客户端链接,回调函数会传递本次链接的socket
io.on('connection',(socket)=>{
    socket.on('sentToServer',(message)=>{
        console.log(message);
        io.emit('sendToClient',{
            message:"你好我是服务端我想和你聊天"
        })
    })
})

//socket.io建立连接主要有这几部分
io.emit()和io.on()分别是实时通讯的发送和接收他们是建立的连接,他们始终保持交流就类似qq和朋友聊天一样
建立连接后进行数据发送与接收emit()和on()两个对应的第一个参数名字要一样例如:上面的

sentToServer
sendToClient

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值