swoole webSocket服务

Posted 狂奔的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\\n");
});

//监听WebSocket消息事件(客户端互相发送信息)
$ws->on(\'message\', function ($ws, $frame) {
    echo "Message: {$frame->data}\\n";
    $ws->push($frame->fd, "server: {$frame->data}");
});

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

$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}\\n";
    //$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."\\n";
    // 2.讲消息发送个所有客户端
    $arr = json_decode($content);
    $id = $arr[0];
    $str= $arr[1];

    //一对一推送
    $ws->push($id,$str);
    // 一对多,推送 (循环方式给每一个客户端发送信息)
    /*foreach ($ws->connections as $fd){
        //echo "FD:".$fd."\\n";
        $arr = json_decode($content);
        $id = $arr[0];
        $str= $arr[1];

        $ws->push($fd,$str);
    }*/
});

 

以上是关于swoole webSocket服务的主要内容,如果未能解决你的问题,请参考以下文章

Swoole WebSocket服务

Swoole WebSocket服务

swoole webSocket 聊天室示例

基于 Swoole 搭建 WebSocket 服务详解

swoole用WebSocket服务器搭建一个简易的聊天室功能

swoole用WebSocket服务器搭建一个简易的聊天室功能