swoole webSocket

什么是webSocket

    webSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。

websocket特点

    1.建立在TCP协议之上

    2. 性能开销小通信高效

    3.客户端可以与任意服务器通信

    4.协议标识符ws wss

    5.持久化网络通信协议


后端示例代码

<?php
/**
 * Created by PhpStorm.
 * User: baidu
 * Date: 18/3/1
 * Time: 下午11:45
 */

$server = new swoole_websocket_server("0.0.0.0", 8812);
//$server->set([]);
$server->set(
    [
        'enable_static_handler' => true,
        'document_root' => "/home/work/hdtocs/swoole_mooc/data",
    ]
);
//监听websocket连接打开事件
$server->on('open', 'onOpen');
function onOpen($server, $request) {
    print_r($request->fd);
}

// 监听ws消息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
    $server->push($frame->fd, "singwa-push-secesss");
});

$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";
});

$server->start();

客户端代码

扫描二维码关注公众号,回复: 1899906 查看本文章
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<h1>singwa-swoole-ws测试<h1>
  <script>
    var wsUrl = "ws://singwa.swoole.com:8812";

    var websocket = new WebSocket(wsUrl);

    //实例对象的onopen属性
    websocket.onopen = function(evt) {
      websocket.send("hello-sinwa");
      console.log("conected-swoole-success");
    }

    // 实例化 onmessage
    websocket.onmessage = function(evt) {
      console.log("ws-server-return-data:" + evt.data);
    }

    //onclose
    websocket.onclose = function(evt) {
      console.log("close");
    }
    //onerror

    websocket.onerror = function(evt, e) {
      console.log("error:" + evt.data);
    }

 </script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_41858542/article/details/80864827
今日推荐