zoukankan      html  css  js  c++  java
  • swoole webSocket服务

    socket.php

    <?php
    //创建websocket服务器对象,监听0.0.0.0:9502端口
    $ws = new swoole_websocket_server("0.0.0.0", 9503);
    
    //监听WebSocket连接打开事件 (刚打开的时候会给客户端发送 Hello,welcome)
    $ws->on('open', function ($ws, $request) {
        var_dump($request->fd, $request->get, $request->server);
        $ws->push($request->fd, "hello, welcome
    ");
    });
    
    //监听WebSocket消息事件(客户端互相发送信息)
    $ws->on('message', function ($ws, $frame) {
        echo "Message: {$frame->data}
    ";
        $ws->push($frame->fd, "server: {$frame->data}");
    });
    
    //监听WebSocket连接关闭事件
    $ws->on('close', function ($ws, $fd) {
        echo "client-{$fd} is closed
    ";
    });
    
    $ws->start();

    socket.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>socket</title>
    
    </head>
    <body>
    123
    </body>
    <script>
        var wsServer = 'ws://192.168.70.167:9503';
        var websocket = new WebSocket(wsServer);
        websocket.onopen = function (evt) {
            console.log("Connected 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>
    </html>

    socket.php,socket.html  目录/usr/local/nginx/html/下

    启动socket.php:

    # php socket.php

    启动socket.html

    浏览器打开:192.168.70.167/socket.html

    其他写法:

    以循环的方式给每一个用户发送信息

    $ws->on('message', function ($ws, $frame) {
        //echo "接收到的信息: {$frame->data}
    ";
        //$ws->push($frame->fd, "server: {$frame->data}");
        //echo "服务器已接收:【".$frame->fd."】";
        //$ws->push($frame->fd, json_encode(['hello','world'.$frame->data]));
    
    
        // 1.客户端发送过来的信息
        $content = $frame->data;
        echo "服务器接收到信息:".$content."
    ";
        // 2.讲消息发送个所有客户端
        $arr = json_decode($content);
        $id = $arr[0];
        $str= $arr[1];
    
        //一对一推送
        $ws->push($id,$str);
        // 一对多,推送 (循环方式给每一个客户端发送信息)
        /*foreach ($ws->connections as $fd){
            //echo "FD:".$fd."
    ";
            $arr = json_decode($content);
            $id = $arr[0];
            $str= $arr[1];
    
            $ws->push($fd,$str);
        }*/
    });
  • 相关阅读:
    Qt之xml文件解析
    Qt之connect
    Qt线程池
    电力电子PSIM仿真——PWM控制
    电力电子Simulink仿真——PWM控制
    电力电子Simulink仿真——直流直流
    电力电子Simulink仿真——整流电路
    电力电子Simulink仿真——电力电子器件
    信号与系统MATLAB仿真——LTI连续系统的时域分析
    信号与系统MATLAB仿真——信号及其运算
  • 原文地址:https://www.cnblogs.com/wesky/p/9448022.html
Copyright © 2011-2022 走看看