webSocket 实现小游戏

简介: 举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。

前言 一、为什么需要 WebSocket?


初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?


答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。可以看图


举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。


它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。


1af9c990729b473e03cbc0ce1cdd0af0.png


webSocket协议 通常是ws和wss


客户端API


1.webSocket为构造函数 使用的时候需要new操作符


new WebSocket


2. readyState 状态


  • CONNECTING:值为0,表示正在连接。
  • OPEN:值为1,表示连接成功,可以通信了。
  • CLOSING:值为2,表示连接正在关闭。
  • CLOSED:值为3,表示连接已经关闭,或者打开连接失败。


3.onopen


用于指定连接成功后的回调函数


4.onclose


用于指定连接关闭后的回调函数


5.onmessage


用于指定收到服务器数据后的回调函数


6.send


方法用于向服务器发送数据


1.nodejs 通过express-ws 连接和发送给前端数据


服务端API 介绍


框架主要是express 后端长连接用的是express-ws


getWss 返回当前的连接池


const express = require('express')
const app = express()
const ws = require('express-ws')
const wss = ws(app).getWss('/talk')
app.ws('/talk', (ws, req) => {
    //console.log('success',ws)
    ws.on('message', msg => {
        wss.clients.forEach(w=>{
            w.send(msg)
        })
    })
})
app.listen(9001, () => {
    console.log('http://localhost:9001/talk')
})


2.前端连接后台的webSocket 进行通信


   const type = prompt('请输入1位红方阵营,2位蓝色方')
        let ws = new WebSocket('ws://localhost:9001/talk')
        let wrpas = document.querySelectorAll('.wraps div');
        ws.onopen = () => {
            console.log('成功')
        }
        wrpas.forEach((item, index) => {
            item.onclick = function () {
                ws.send(JSON.stringify({
                    index,
                    type
                }))
            }
        })
        ws.onmessage = ({ data }) => {
            let options = JSON.parse(data)
            wrpas[options.index].style.background = options.type == 1 ? 'red' : 'blue';
        }
目录
相关文章
|
7月前
使用uniapp实现websocket聊天功能
使用uniapp实现websocket聊天功能
|
5月前
|
网络协议 前端开发 JavaScript
WebSocket 【实用教程】
WebSocket 【实用教程】
109 1
|
5月前
|
网络协议 UED 开发者
|
7月前
|
存储 JavaScript Java
基于 WebSocket 打造聊天室
基于 WebSocket 打造聊天室
|
7月前
|
资源调度 JavaScript 前端开发
❤Nodejs 第十五章(简单websocket聊天实现)
【4月更文挑战第15天】本文介绍了在Node.js中实现简单WebSocket聊天的过程。首先通过`yarn`创建项目并安装`ws`和`express`依赖。接着,编写`WebSocketServer.js`建立WebSocket服务器,处理客户端连接、消息收发及错误。然后,用`server.js`创建一个静态文件服务器,提供`index.html`。`index.html`包含客户端的WebSocket连接和消息处理。启动两个服务器后,可以在浏览器中打开`index.html`进行聊天。最后,讨论了在Node.js 20+Vite环境下使用WebSocket时可能遇到的问题
72 0
|
前端开发 JavaScript 程序员
手摸手教你使用WebSocket[其实WebSocket也不难]
前言 在本篇文章之前,WebSocket很多人听说过,没见过,没用过,以为是个很高大上的技术,实际上这个技术并不神秘,可以说是个很容易就能掌握的技术,希望在看完本文之后,马上把文中的栗子拿出来自己试一试,实践出真知。 WebSocket解决了什么问题: 客户端(浏览器)和服务器端进行通信,只能由客户端发起ajax请求,才能进行通信,服务器端无法主动向客户端推送信息。 当出现类似体育赛事、聊天室、实时位置之类的场景时,客户端要获取服务器端的变化,就只能通过轮询(定时请求)来了解服务器端有没有新的信息变化。
652 1
|
移动开发 前端开发 网络协议
WebSocket网页聊天室
WebSocket网页聊天室
179 0
|
存储
Netty入门到超神系列-基于WebSocket开发聊天室
在很多的网站中都嵌入有聊天功能,最理想的方式就是使用WebSocket来开发,屏幕面前的你如果不清楚WebSocket的作用可以自己去百度一下,Netty提供了WebSocket支持,这篇文章将使用Netty作为服务器,使用WebSocket开发一个简易的聊天室系统。
263 0
|
监控 小程序 安全
微信小程序使用GoEasy实现websocket实时通讯
手把手的教您用GoEasy在微信小程序里,最短的时间快速实现一个websocket即时通讯Demo。
|
缓存 JavaScript 网络协议