irpas技术客

webSocket 实现小游戏_小满zs_websocket 游戏

irpas 7989

前言 一、为什么需要 WebSocket?

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

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

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

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

?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'; }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #websocket #游戏 #前言 #一为什么需要 #WebSocket初次接触 #HTTP