学习websocket

WebSocket是一种在Web浏览器和服务器之间实现双向通信的协议。与HTTP协议不同,它允许服务器主动向客户端发送数据,而不需要客户端发出请求。这使得WebSocket非常适合实时应用程序,如在线聊天、实时游戏、股票市场更新等。

特点

  • 双向通信:与HTTP不同,WebSocket允许在客户端和服务器之间进行双向通信,这意味着服务器可以推送数据给客户端,而不仅仅是响应客户端的请求。
  • 低延迟:WebSocket连接始终处于打开状态,因此避免了HTTP请求/响应往返所引入的延迟。这使得它非常适合实时应用程序,可以更快地传输数据。
  • 轻量级:WebSocket协议是一种轻量级的协议,与HTTP相比,它减少了在通信头中发送的数据量,从而减少了通信的开销。
  • 支持跨域通信:WebSocket支持跨域通信,这使得可以在不同域之间建立连接,实现跨域通信。

常见的使用场景

  • 实时聊天应用
  • 实时游戏
  • 实时数据更新

websocket的JS库

  • ws
  • Socket.io
  • nodejs-websocket
  • websocket-node
使用nodejs-websocket启动一个websocket
import ws from 'nodejs-websocket'

// 创建一个服务server,每次用户链接,函数就会被执行,并给当前用户创建一个connect对象
var server = ws.createServer(connect => {
    // 每当接收到用户传递过来的数据,就会触发text事件,并传入数据
    connect.on("text", data => {
        // 给所有用户发送数据
        connect.server.connections.forEach(item => {
            console.log(data)
            item.send(data)
        })
    })
    connect.on("message", data => {
        console.log("收到客户端消息:" + data)
    })
    //监听websocket断开链接
    connect.on("close", () => {
        console.log("websocket连接断开....")
    })
    //监听websocket异常信息
    connect.on("error", () => {
        console.log("websocket连接异常....")
    })
})
server.listen(1111, () => {
    console.log("websocket running")
})
  	<input type="text" placeholder="请输入内容">
    <button>提交</button>
    <script>

        const input = document.querySelector('input')
        const button = document.querySelector('button')
        const socket = new WebSocket('ws://localhost:1111')
     
        socket.addEventListener('open', () => {
           console.log('连接成功')
        })
        button.addEventListener('click', () => {
            const value = input.value
            socket.send(JSON.stringify(value))
            input.value = ''
        })
        socket.addEventListener('message', (e) => {
			// 接收到发过来的信息
            console.log(e.data)
           
        })
    </script>

相关推荐

  1. 学习websocket

    2024-05-14 01:34:08       41 阅读
  2. websocket学习

    2024-05-14 01:34:08       31 阅读
  3. netty websocket学习

    2024-05-14 01:34:08       70 阅读
  4. WebSocket学习笔记

    2024-05-14 01:34:08       31 阅读
  5. 十分钟学会WebSocket

    2024-05-14 01:34:08       53 阅读
  6. 十分钟学会WebSocket

    2024-05-14 01:34:08       37 阅读
  7. WebSocket

    2024-05-14 01:34:08       63 阅读
  8. websocket

    2024-05-14 01:34:08       52 阅读
  9. WebSocket

    2024-05-14 01:34:08       60 阅读
  10. <span style='color:red;'>WebSocket</span>

    WebSocket

    2024-05-14 01:34:08      44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 01:34:08       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 01:34:08       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 01:34:08       87 阅读
  4. Python语言-面向对象

    2024-05-14 01:34:08       96 阅读

热门阅读

  1. self.predictor.setup_model(model=self.model, verbose=is_cli)

    2024-05-14 01:34:08       32 阅读
  2. SpringSecurity多表,多端账户登录

    2024-05-14 01:34:08       34 阅读
  3. Python 自动化脚本系列:第1集

    2024-05-14 01:34:08       31 阅读
  4. 基于大数据的医疗信息化系统

    2024-05-14 01:34:08       32 阅读
  5. C#正则表达式,提取信息使用

    2024-05-14 01:34:08       32 阅读
  6. 大数据ETL工具kettle-spoon

    2024-05-14 01:34:08       42 阅读
  7. redis试题按知识点归类(三)

    2024-05-14 01:34:08       29 阅读
  8. 对语言模型的通用声学攻击

    2024-05-14 01:34:08       36 阅读
  9. Vue2 动态路由

    2024-05-14 01:34:08       32 阅读
  10. Unity组件入门篇目录

    2024-05-14 01:34:08       35 阅读
  11. C# 中的匿名方法

    2024-05-14 01:34:08       36 阅读
  12. Maximo 使用 REST API 创建 Cron Task

    2024-05-14 01:34:08       34 阅读
  13. 信息化总体架构方法_1.信息化的一般概念

    2024-05-14 01:34:08       32 阅读