当前位置: 首页 > news >正文

ps做网站学到什么程度广州seo推广运营专员

ps做网站学到什么程度,广州seo推广运营专员,建外贸网站有效果吗,网络营销的基本流程一、WebSocket出现的原因 1、Http协议发布REST API 的不足: 每次请求响应完成之后,服务器与客户端之间的连接就断开了,如果客户端想要继续获取服务器的消息,必须再次向服务器发起请 求。这显然无法适应对实时通信有高要求的场景…

一、WebSocket出现的原因

1、Http协议发布REST API 的不足:
每次请求响应完成之后,服务器与客户端之间的连接就断开了,如果客户端想要继续获取服务器的消息,必须再次向服务器发起请

求。这显然无法适应对实时通信有高要求的场景。

2、改善http的不足:Web通信领域出现了一些其他的解决方案,如轮询、长轮询、服务器推送事件、WebSocket
(1)轮询:就是重复发送新的请求到服务器。如果服务器没有新的数据,就发送适当的指示并关闭连接。然后客户端等待一段时间

(比如间隔一秒),再发送另一个请求。这种实现方式相对比较简单,无须做过多的更改。但缺点是轮询的间隔过长,会导致用户不能及

时接收到更新的数据;轮询时间过短,会导致查询请求过多,增加服务器端的负担。

(2)长轮询:客户端发送一个请求到服务器,如果服务器端没有新的数据,就保持这个连接直到有数据。一旦服务器端有了数据

(消息)给客户端,它就使用这个连接发送数据给客户端,接着连接关闭

(3)服务器推送事件:Server-Sent Events(SSE),SSE通常重用一个连接处理多个消息(事件)。SSE还定义了一个专门的媒体类

型,用于描述一个从服务端发送到客户端的简单格式。

(4)WebSocket:提供了一个真正的全双工连接。发起者是一个客户端,发送一个带特殊HTTP头的请求到服务端,通知服务器。

该方案的优点是属于html5标准,已经被大多数浏览器支持,而且是真正的全双工,性能比较好,其缺点是实现起来比较复杂,需要对ws

协议专门处理。

二、Node使用ws创建WebSocket服务器

1、Node.js原生API没有提供对WebSocket的支持,需要安装第三方包才能使用WebSocket功能

2、ws模块:是一个用于支持WebSocket客户端和服务器的框架。它易于使用,功能强大,且不依赖于其他环境

3、安装ws:npm install ws

4、创建WebSocket服务器:

 //创建一个WebSocket服务器,在8080端口启动const WebSocket = require('ws')const server = new WebSocket.Server({port:8080})

5、WebSocket.Server(options[,callback])方法中options对象所支持的参数

(1)host:绑定服务器的主机名

(2)port:绑定服务器的端口号

(3)backlog:挂起连接队列的最大长度

(4)server:预先创建的node.js http/s服务器

(5)verifyClient:可用于验证传入连接的函数

(6)handleProtocols:可用于处理WebSocket子协议的函数

(7)path:仅接受与此路径匹配的连接

(8)noServer:不启用服务器模式

(9)clientTracking:指定是否跟踪客户端

(10)perMessageDeflate:启用/禁用消息压缩

(11)maxPayload:允许的最大消息大小(以字节为单位)

三、监听连接:ws通过connection事件来监听连接

server.on('connection',function connection(ws,req){const ip = req.socket.remoteAddressconst port = req.socket.remotePortconst clientName = ip + port​console.log('%s is connected ',clientName)})//只要有WebSocket连接到该服务器,就会触发'connection'事件;req对象可以用来获取客户端的信息,如ip、端口号//获取所有已连接的客户端信息,则可以使用server.clients数据集

四、发送数据:ws通过send()方法来发送数据

 /* send(data [,options][,callback])data:发送的数据options对象:(1)compress:指定数据是否需要压缩。默认为true(2)binary:指定数据是否通过二进制传送。默认是自动检测(3)mask:指定是否应遮罩数据。(4)fin:指定数据是否为消息的最后一个片段。默认为true*/server.on('connection',function connection(ws,req){const ip = req.socket.remoteAddressconst port = req.socket.remotePortconst clientName = ip + port​console.log('%s is connected ',clientName)​ws.send('Welcome ' + clientName)})

五、接收数据:ws通过message事件来接收数据。当客户端有消息发送给服务器时,服务器就能够触发该消息

server.on('connection',function connection(ws,req){const ip = req.socket.remoteAddressconst port = req.socket.remotePortconst clientName = ip + port​console.log('%s is connected ',clientName)​ws.send('Welcome ' + clientName)​ws.on('message',function incoming(message){console.log('received: %s from %s',message,clientName)server.clients.forEach(function each(client){if(client.readyState === WebSocket.OPEN){client.send(clientName +" -> " + message)}})})})

六、准备的状态:ws中WebSocket类具有以下4中准备状态

1、CONNCETION:值为0,表示连接还没有打开

2、OPEN:值为1,表示连接已经打开,可以通信了

3、CLOSING:值为2,表示连接正在关闭

4、CLOSED:值为2,表示连接已经关闭

server.clients.forEach(function each(client){if(client.readyState === WebSocket.OPEN){client.send(clientName +" -> " + message)}})

七、关闭WebSocket服务器:通过监听close事件关闭服务器

 server.on('close',function close(){console.log('disconnected')})

案例
1、服务器端:server.js

const WebSocket = require('ws')const server = new WebSocket.Server({port:8080})​server.on('open',function open(){console.log('connected')})​server.on('close',function close(){console.log('disconnected')})​server.on('connection',function connection(ws,req){const ip = req.socket.remoteAddressconst port = req.socket.remotePortconst clientName = ip + port​console.log('%s is connected ',clientName)​ws.send('Welcome ' + clientName)​ws.on('message',function incoming(message){console.log('received: %s from %s',message,clientName)server.clients.forEach(function each(client){if(client.readyState === WebSocket.OPEN){client.send(clientName +" -> " + message)}})})})

2、客户端:

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><script>var socketif (!window.WebSocket) {window.WebSocket = window.MozWebSocket}if(window.WebSocket){socket = new WebSocket("ws://localhost:8080/ws")socket.onmessage = function(event){var ta = document.getElementById('responseTest')ta.value = ta.value + '\n' + event.data}socket.onopen = function(event) {var ta = document.getElementById('responseTest')ta.value = '连接开启!'}​socket.onclose = function(event) {var ta = document.getElementById('responseTest')ta.value = '连接关闭!'}}else{alert('你的浏览器不支持WebSocket')}function send(message){if(!window.WebSocket){return}if(socket.readyState === WebSocket.OPEN){socket.send(message)}else{alert('连接没有开启')}}</script><form onsubmit="return false"><h3>WebSocket 聊天室:</h3><textarea  id="responseTest" style="width: 500px;height: 300px;"></textarea><br><input type="text" name="message" style="width: 300px;" value="Welcome to woniuxy.com"><input type="button" value="发送消息" onclick="send(this.form.message.value)"><input type="button" value="清空聊天记录" onclick="javascript:document.getElementById('responseTest').value=''"></form></body></html>
http://www.fp688.cn/news/144575.html

相关文章:

  • 腾博会的网站是什么百度统计怎么用
  • 电子商务网站开发实务指数基金定投怎么买
  • 网站开发工作内容标题优化怎样选关键词
  • 做影片的网站描述百度广告推广怎么做
  • 昆明网站建设制作推广平台哪个效果最好
  • 做淘客app要网站吗国外市场网站推广公司
  • 街道口做网站头条收录提交入口
  • 企业微网站怎么建设百度seo原理
  • 做网站 指导比较好网站制作公司
  • 物流管理网站怎么做营销推广费用预算表
  • 专业做网站流程郑州网络seo公司
  • 南阳网站建设南宁百度推广代理公司
  • 网站子页面怎么做的宁波seo关键词
  • 网站建设太原stp营销战略
  • 网站建设 网络推广网络推广吧
  • wordpress新闻网站主题永久免费linux服务器
  • 网站建设框架文档长沙网站推广工具
  • 汶上网站建设哪家便宜百度推广代理商与总公司的区别
  • 西宁公司官方网站建设平台推广费用一般是多少
  • 定制头像的网站郑州网站建设公司排名
  • 广州做网站多少钱开发网站建设公司
  • flash 做网站手机怎么建网站
  • 查询公司信息的网站百度seo关键词排名s
  • 网站如何做优化优秀软文案例
  • 蜡笔小新网页制作模板附子seo
  • 网站开发分类站长统计幸福宝2022年排行榜
  • cms(网站内容管理系统)有哪些流量精灵app
  • 小企业做网站有没有用国内十大搜索引擎
  • 购物网站设计毕业论文优化网站排名费用
  • 网站建设电脑和手机有区别吗西安网站建设维护