A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯程程 中级黑马   /  2018-11-29 15:52  /  1347 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 上海分校-小影 于 2018-11-30 13:20 编辑

PHP新增的swoole,可以实现即时聊天功能,这是一大亮点呀.WebSocket服务器是建立在Http服务器之上的长连接服务器,客户端首先会发送一个Http的请求与服务器进行握手
握手成功后会触发onOpen事件,表示连接已就绪,onOpen函数中可以得到$request对象,包含了Http握手的相关信息,如GET参数、Cookie、Http头信息等。
废话不多说了,就上代码吧!
websocket.php的文件
<?php
###注意:fd指客户端唯一标识(每建立一个连接都有一个唯一标识,后期就通过该标识通信)

#1.创建websocket服务
$server = new swoole_websocket_server("0.0.0.0", 8003);
#2.握手成功,触发回调函数
$server->on('open', function (swoole_websocket_server $server, $request) {
    echo "server: handshake success with fd{$request->fd}\n";
});
#3.收到消息,触发回调函数
$server->on('message', function (swoole_websocket_server $server, $frame) {
    // 在服务器端输出消息,每一个链接的fd都是不一样的
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
// 将数据返回给客户端
// 两个参数,参数1:发给谁,参数2:发的什么内容
    $server->push($frame->fd, "this is server");
});
#3.关闭连接,触发回调函数
$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";
});
#4.启动websocket服务
$server->start();
创建test.html文件,当做客户端

<!DOCTYPE html><html><head>        <title></title>        <meta charset="utf-8"></head><body>        <textarea id="textarea"></textarea>        <br />        <input type="button" value="发送数据" />        <script type="text/javascript">                //创建websocket对象                var ws = new WebSocket("ws://192.168.184.128:8003");                                //握手成功出发                  ws.onopen = function() {          console.log("连接成功");               };                 //收到socket服务消息,则触发回调函数                ws.onmessage = function(event) {                  var data = event.data;                  console.log("收到socket服务消息,内容:" + data);                };                 function send() {                        var data = document.getElementById('textarea').value;                        ws.send(data);                }</body>感兴趣的赶紧过来试一试吧,惊喜连连


1 个回复

正序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马