WebSocket、socket.io

WebScoket

  • WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议

先外部安装

 npm i ws -S
  • 创建websocket服务器
var WebScoketServe = require("ws").Server;
//npm i ws -S

let wss = new WebScoketServe({ port: 8986 });
//connection连接
wss.on("connection", function(ws) {
    let obj = {
            name: "小任",
            age: 20
        }
        //推送数据
        //限定时间
    setInterval(() => {
    查询数据库中的信息,并推送给页面
        ws.send(JSON.stringify(obj));
    }, 2000)
		ws.onmessage = function(d) {
            //插入到数据中
            console.log(d.data);
        }
    //错误信息
    ws.onerror = function(err) {
        console.log(err);
    }
})
  • 客户端连接服务器
//协议 域名 端口号 必须全部一致
        //非同源:跨域的问题
        //连接服务器   建立握手
        let ws = new WebSocket("ws://localhost:8986");
        打开协议
        ws.onopen = function() {
            console.log("发送成功")
        }

        ws.onmessage = function(data) {
            console.log(data);
        };
        document.querySelector(".btn").onclick = function() {
                let iptValue = document.querySelector(".ipt").value;
                console.log(iptValue);
                ws.send(iptValue);
            }
关闭协议:关闭协议后不能发送数据
ws.close();

socket.io模块

安装:npm i socket.io -S
使用

const server = require("http").createServer(app.callback());
const io = require("socket.io")(server);

//sokcet  当建立连接后,传入回调函数中的参数
//        他代表当前连接者
io.on("connection", (socket) => {
    console.log("有链接");
    let obj = {
        name: "小任",
        age: 20
    }

    //传递数据
    //setInterval(() => {
    // socket.emit("getData", obj);
    //}, 1000)
    socket.on("addData", (data) => {
        console.log(data);
        // socket.emit("getData", obj);
        socket.broadcast.emit("getData", data)
    })

})
客户端建立连接
        let socket = io.connect();
        socket.on("getData", (data) => {
            console.log(data);
            document.querySelector(".s").innerHTML = data.name

        })
        document.querySelector(".btn").onclick = function() {
            let iptValue = document.querySelector(".ipt").value;
            socket.emit("addData", iptValue);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WebsocketSocket.io 都是用于在客户端和服务端之间建立双向通信的协议。 Websocket 是一种协议,它提供了一种在单个 TCP 连接上进行全双工通信的方法。这意味着可以在两端之间同时传输数据。它使用了浏览器中的 JavaScript 对象来创建 WebSocket 连接。 Socket.io 是一个基于 Websocket 的实时库,它封装了 Websocket 的细节,并提供了自动的跨浏览器兼容性。它还支持自动重连、自动检测网络状况、以及其他一些实用的功能。 总的来说,Websocket 是一种通信协议,而 Socket.io 是一个库,它在使用 Websocket 的基础上提供了更多的功能。 ### 回答2: WebSocketSocket.io都是用于实现实时通信的协议,但它们在功能和实现上有一些区别。 WebSocket是一种基于TCP的通信协议,它提供了双向通信的能力。它可以在客户端和服务器之间建立持久的连接,并通过该连接传输数据。WebSocket使用简单的握手过程建立连接,然后可以发送和接收数据,而无需经过HTTP的请求-响应循环。由于它是一种底层协议,WebSocket可以直接与服务器进行通信,适用于实现实时的双向通信。 Socket.io是一个基于WebSocket的库,它提供了一些额外的功能和特性。与WebSocket相比,Socket.io更加灵活,能够适应不同的环境和网络条件。Socket.io可以自动检测和选择最佳的传输协议,包括WebSocket、AJAX和长轮询等。这使得Socket.io可以在不同的浏览器和设备上工作,并且可以处理浏览器兼容性问题。此外,Socket.io还提供了一些高级功能,如房间和命名空间的概念,用于组织和管理连接。 总结来说,WebSocket是一种底层协议,提供了双向通信的能力,而Socket.io是一个基于WebSocket的库,提供了更多的功能和便利性。如果只需要简单的双向通信,可以使用WebSocket;如果需要更多的功能和灵活性,可以选择Socket.io来实现实时通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值