websocket php apache,PHP第一篇:PHP WebSocket实现前后端数据交互,亲测可用(windows+ apache2.4 +php5.6 )...

首先贴上参考的教程:

①:https://blog.csdn.net/lian772882/article/details/81386115(主)

②:https://www.cnblogs.com/saonian/p/5504456.html(理解原理)

③:https://www.cnblogs.com/isdom/p/webclips028.html(参考解码方法)

根据①实现了简单的前后端交互,但是,参考②和③5,我针对我的情况成功的增加了两点:

1.允许服务器返回JSON格式的数据

2.获取客户端发送的数据(这一条有许多教程都实现了,比如拿聊天室,或者这篇教程的大佬

④:https://blog.csdn.net/qq_38568388/article/details/78340750),但是由于我参考这个,原理都一样,但很多东西不好改(主要还是懒。。。)

贴一张websocket的工作原理(from②):

d6b09224c611aff2bd6a9c7b2c23a5b9.png

再开始之前,先确认,你的php否开启了sockets扩展:

6c0cfb8b14435924afd3c7011403236f.png

websocket.php:

125 && $length < 65536)

$header = pack('CCn', $b1, 126, $length);

elseif($length >= 65536)

$header = pack('CCNN', $b1, 127, $length);

return $header.$text;

}

//function ord_hex($data) {

// $msg = '';

// $l = strlen($data);

// for ($i= 0; $i

websocket.html:

WebSocket协议的客户端程序

连接到WS服务器

向WS服务器发消息并接收消息

断开与WS服务器的连接

运行测试:

1. 在你Apache访问目录,我的在(apache的htdocs ),打开cmd(shift+右键,能看到在此目录打开powershell/命令行终端)

运行:php websocket.php

ac57ed78bcedf6718bb86e624e87f6ed.png

这样就可以开启了socket线程,等待客户端连接了。

2.浏览器访问:http://localhost/websocket_2.html,并F12打开浏览器控制台

7130209c1c01e6c059bc120fda1135d5.png

3.先点击,连接服务器,在发送消息并接收,此后这次回话就结束了,所以你点断开没用。

51b9562996313522095a02adbcc31b12.png

至此已成功实现根据前端发送的数据,判断返回相应的json数据。但还有几点讨论跟大家说一下:

后续讨论:

1.你想一开始就初始化一个与服务器端的连接,可以参考④中的写法:

将:

wsClient = new WebSocket('ws://127.0.0.1:9999');

wsClient.onopen = function(){

console.log('WS客户端已经成功连接到服务器上')

}

写在最外层:

a602d55394b2f48244934b4516337c3f.png

但是有个缺陷:你运行完发送消息之后,如果没有那个点击连接的按钮,那你只能重新刷新页面,因为运行之后就断开连接了。

其实能实现持续发送的,可以参考④,目前我没去改。

2.如果你的json从其他页面传过来,你需要注意编码,在代码中我也有提及,特别对中文,可以先用urlencode,在用urldecode例如我的:

d69318007756a0cbc9b73852cac3780f.png

3.未完待续,我会研究下怎么加载页面后,可以直接连续点发送消息,再断开连接操作。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值