HTTP协议的特性:属于“请求-响应”模型,只有客户端发起了请求消息,服务器才能给出响应消息,没有请求,就没有响应;一个请求消息,服务器只能返回一个响应消息。有些特殊应用场景中,如“在线股票”、“聊天室”等,需要模拟呈现出“客户端不发请求,服务器也在不停的给出响应”效果,若使用HTTP协议,只能使用“AJAX+定时器”来近似的实现——心跳请求,问题:心跳过慢则信息的实效性差,心跳过快则服务器压力太大!
WebSocket协议的特性:属于“广播-收听”模型,只要客户端连接到服务器上,就不再断开(永久连接),一方可以不停的给对方发消息,对方可以不给出响应。使用WS协议代替心跳请求,可以非常好的解决HTTP协议在某些应用中的不足。WS协议的服务器也有不足:永久连接限制了客户端的数量。
WebSocket应用程序必需两个程序:
WS服务器端程序:
(1)、可以使用Java、PHP、C#、Node.js编写,修改PHP解释器配置文件(php.ini)来启用socket相关函数:extension=php_sockets.dll 去掉此行前的分号(此例子采用xampp本地服务) 重启本地服务(记得配置xampp的php变量环境,不懂百度)
(2)、在xampp\\htdocs 下新建一个文件websocket,里面新建两个文件如下:
socket_client.html
socket_server.php
socket_client.html文件代码如下:
html>
WebSocket协议的客户端程序
连接到WS服务器向WS服务器发消息并接收消息断开与WS服务器的连接socket_server.php代码如下:
(3)、进入文件夹(xampp\htdocs\websocket)按住Shift +右键,(选择在此处打开令行窗口)执行调用PHP解释器,执行PHP语言编写的Socket服务器程序,输入如下代码:
php socket_server.php
运行完显示如下信息代表连接成功
(4)、访问socket_client.html (http://127.0.0.1/websocket/socket_client.html) 需要服务访问,点击按钮“连接到ws服务器”控制台上(console.log)能看到如下
点击按钮“向WS服务器发消息并接收消息”就能看到如下
这时就可以将信息填入html 标签上 就实现了 时时更新了
标签:websocket,socket,WS,后台,服务器,php,连接,客户端
来源: https://blog.csdn.net/benli8541/article/details/113794589