webScoket

 webScoket是什么?


  • 支持端对端通讯
  • 可以由客户端发起,也可以有服务端发起
  • 用于消息通知、直播间讨论区、聊天室、协同编辑等

做一个简单的webScoket


客户端配置: 

1、新建一个页面叫web-scoket.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>webScoket</title>
</head>
<body>
    <p>webScoket</p>
    <button id="btn-send">发送消息</button>
    <script>
        const btnSend = document.getElementById('btn-send')
    </script>
</body>
</html>

2、进行连接服务器端的基本操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>webScoket</title>
</head>
<body>
    <p>webScoket</p>
    <button id="btn-send">发送消息</button>
    <script>

        //端口的3000要对应服务端的端口
        const ws = new WebSocket('ws://127.0.0.1:3000')
        //连接成功!
        ws.onopen = () => {
            //连接成功后,往服务端发送信息
            ws.send('客户端连接成功!')
        }
        //接收信息
        ws.onmessage = (val) => {
            console.info('收到',val)
        }

        const btnSend = document.getElementById('btn-send')
    </script>
</body>
</html>

服务器端配置: 

1、进入一个目录执行npm init -y

注意:执行以上命令,会生成一个package.json的文件

{
  "name": "web-scoket-sever",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

2、安装ws和nodemon插件、以下是安装插件的命令 

sudo cnpm i ws
sudo cnpm i nodemon

3、在文件夹下新建一个src目录,在src目录下新建index.js文件 

const { WebSocketServer } = require('ws')

//new 一个webScoket服务,端口号为3000
const wsServer = new WebSocketServer({ port: 3000 })

//监听连接connection,
wsServer.on('connection', wx => {
    console.info('connection');

    //监听信息,msg客户端传递过来的信息
    wx.on('message', msg => {
        console.info('收到信息', msg.toString());

        //收到信息2秒后,给客户端一个反馈
        setTimeout(() => {

            //ws.send给客户端发送信息
            wx.send('服务端已收到信息!' + msg.toString())
        }, 2000)
    })
})

4、修改package.json文件中的代码

 "dev": "nodemon src/index.js"

5、代码执行npm run dev启动服务

功能测试:

1、客户端

 2、服务器端

 总结:

1、webSocket连接过程

  • 先发起一个HTTP请求
  • 成功之后再升级到WebSocket协议,再通讯

2、HTTP协议和webSocket协议的区别?

 webSocket协议是ws://开头的,可双端发起请求;

webSocket没有跨域的限制

webSocket通过send和message通讯,http通过req和res通讯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值