HTML5 WebSocket与后端PHP WebSocket通讯实例(完整版)

本篇文章更新于:2019年5月17日,禁止抄袭,否则必究。
最近做了一个活动,需要用到websocket实现实时通讯功能,所以总结一下自己的经验,以便小伙伴们少走弯路。
接下来我将讲述的是H5和php实现相互通讯的实例,冗余的话不多说,直接讲解代码。
首先要了解一下几个术语:
 HTTP协议的特性:属于“请求-响应”模型,只有客户端发起了请求消息,服务器才能给出响应消息,没有请求,就没有响应;一个请求消息,服务器只能返回一个响应消息。有些特殊应用场景中,如“在线股票”、“聊天室”、”互动游戏”、“摇一摇活动”等,需要模拟呈现出“客户端不发请求,服务器也在不停的给出响应效果,若使用HTTP协议,只能使用“AJAX+定时器”来近似的实现——心跳请求,问题:心跳过慢则信息的实效性差,心跳过快则服务器压力太大!
WebSocket协议的特性:属于“广播-收听”模型,只要客户端连接到服务器上,就不再断开(永久连接),一方可以不停的给对方发消息,对方可以不给出响应。使用WS协议代替心跳请求,可以非常好的解决HTTP协议在某些应用中的不足。WS协议的服务器也有不足:永久连接限制了客户端的数量。
WebSocket应用程序必需两个程序:一个是前端,一个是后端。
WS服务器后端程序:
可以使用Java、PHP、C#、Node.js编写,本例的服务端采用第apche的php编写,如果想使用其他的语言,请百度,或者google等等。
1.第一步:搭建web PHP环境这里使用的apache的服务器进行运行,如果不懂的怎么搭建
环境的请点击 apache web环境搭建
2.在配置web站点域名以及相关的配置:在yum安装的apache环境里面配置文件在 /etc/httpd/conf.d/virtualhost.conf

注意:这个只是配置http访问的。如果想使用https访问则要配置443端口,这里配置ssl请点击配置HTTP和配置SSL
3.第三步:在/var/www/html/目录下创建websocket目录,如果使用命令

4.在websocket目录下创建文件前端显示页面文件index.html

5.在websocket目录下创建文件服务器后端php文件phpwebsocket.php

第6步:在websocket目录下再次创建依赖的类文件websocket.class.php

第7步:使用命令php 在安装的目录执行文件phpwebsocket.php

如果出现了如下图所示错误则:

解决办法是:在websocket.class.php文件里面第27行修改函数 socket_select 传值的参数
为如下

第8步:再次执行php -q phpwebsocket.php命令,执行ok无报错

第8步:访问你的配置的域名例如:www.sky8g.com则显示下面图所示

打开调试模式如果出现了错误
(index):16 WebSocket connection to ‘ws://www.sky8g.com:8090/phpwebsocket.php‘ failed: Error during WebSocket handshake: Unexpected response code: 200

 

解决办法:俩个地方需要检查第一个地方还是前端index.html里面的的

第二个地方是最常见的地方就是文件phpwebsocket.php最后一行的实例的localhost 应该是是你绑定的ip地址

再次访问刷新页面无报错。
发送hello会返回信息OK

如果下载完整版的代码请点击这里。

 

如果有不懂的地方请留言,SKY8G网站编辑者专注于研究IT源代码研究与开发。希望你下次光临,你的认可和留言是对我们最大的支持,谢谢!

上一篇: PHP | strchr() 函数

下一篇: CSS 妙用(img)图片水平垂直居中

登录 评论
avatar