为什么需要WebSocket?因为我对概念理解不深,文字表达能力不强。如果HTTP等方面的描述不准确,请指正。谢谢。需要另一笔交易吗?它带来什么好处?答案很简单,因为HTTP协议有一个缺陷:通信只能由客户端发起。例如:我们想知道今天的天气,只需要客户端向服务器发送请求,服务器返回查询结果即可。HTTP协议不能让服务器主动向客户端推送信息。这种单向请求的特点,注定了客户端要知道服务端是否有持续的状态变化是很麻烦的。我们只能用“轮询”:设置定时器每隔一段时间发送一次“查询”(简单理解为ajax请求),看看服务器是否有新的信息。最典型的场景就是聊天室。----参考阮一峰老师文章:websocket教程轮询请求的缺点:不停的链接、断开、链接、断开请求,浪费大量服务器资源,浪费带宽,浪费移动端流量。来源限制,客户端可以与任何服务器通信,不涉及跨域问题。双向通信,服务端可以主动向客户端发送数据。数据格式相对轻量级,性能开销小,通信高效。websocket为什么高效普通的http通信是基于字符的通信(超文本),websocket一开始是文本协议,建立链接后就变成了二进制协议,不需要转换数据,所以效率高高。socket.io的使用socket.io是一个封装好的库。原生的websocket比较复杂,需要自己处理请求头,设置连续链接等等。因此,使用socket.io安装npmisocket.io-Dsocket主要有两个方法:sock.emit('name',data)主动发送数据sock.on('name',function(data){})`接收data1.Server//server.jsconsthttp=require('http')constio=require('socket.io')letserver=http.createServer((req,res)=>{})server.listen(8080)//创建wswebsocket简称wsletwsServer=io.listen(server);wsServer.on('connection',sock=>{sock.on('aaa',function(a,b){//name->'aaa'要和前台的名字一致console.log(a)console.log(b)console.log(arguments)})//'aaa'事件名称要和前台一致setInterval(function(){sock.emit('bbb','datasentbytheserver')//name->'bbb'必须与前台名称一致},2000)})2.Client
