美文网首页
swoole学习第五讲(创建一个websocket服务器)

swoole学习第五讲(创建一个websocket服务器)

作者: sowork | 来源:发表于2019-02-19 00:03 被阅读6次
开启docker9501映射端口
      ports:
        - "${WORKSPACE_SSH_PORT}:22"
        - "9501:9501"
编写webSocketServer服务ws_server.php
// 创建websocket对象
$ws = new swoole_websocket_server('0.0.0.0', 9501);

// 监听serv启动事件
$ws->on('start', function ($serv) {
    echo "Start \n";
});

// 监听websocket打开事件
$ws->on('open', function ($ws, $request) {
    var_dump($request->fd, $request->get, $request->server);
    $ws->push($request->fd, "hello, welcome \n");
});

// 监听websocket消息事件
$ws->on('message', function ($ws, $frame){
    echo "Message: $frame->data \n";
    $ws->push($frame->fd, "server: $frame->data \n");
});

// 监听webscket关闭事件
$ws->on('close', function ($ws, $fd) {
    echo "client-$fd is closed \n";
});

// 启动websocket服务器
$ws->start();
编写js客户端ws_client.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webSocket Demo</title>
</head>
<body>
<script>
    var swServer = 'ws://127.0.0.1:9501';
    var webSocket = new WebSocket(swServer);
    webSocket.onopen = function (evt) {
        console.log('connect to WebSocket server.')
    };

    webSocket.onclose = function (evt) {
        console.log('Disconnected.');
    };
    
    webSocket.onmessage = function (evt) {
        console.log('retrieved data from server: ' + evt.data);
    };

    webSocket.onerror = function (evt, e) {
        console.log('Error occured: ' +evt.data);
    }
</script>
</body>
</html>
开启webSocketServer

php ws_server.php

访问websocket客户端

双击打开ws_client.html文件,在控制台查看连接情况


查看server端打印情况

相关文章

网友评论

      本文标题:swoole学习第五讲(创建一个websocket服务器)

      本文链接:https://www.haomeiwen.com/subject/yohjrqtx.html