workerman-gateway的使用

1、安装gateway

composer require workerman/gatewayclient

2、下载GatewayWorker文件

链接:https://pan.baidu.com/s/1JRrCO2jb4Vze3I8a-rW-mg 
提取码:pivw

3、运行GatewayWorker/start_for_win.bat文件

4、连接测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WebSocket Example</title>
    <script>        // 1. 创建一个 WebSocket 对象  
    let socket = new WebSocket("ws://你的ip:8282");
    // 2. 监听 WebSocket 连接事件
    socket.addEventListener("open", function (event) {
        console.log("WebSocket connected:", event);
    });
    // 3. 监听 WebSocket 收到消息事件
    socket.addEventListener("message", function (event) {
        console.log("WebSocket message received:", event.data);
    });
    // 4. 监听 WebSocket 关闭事件
    socket.addEventListener("close", function (event) {
        console.log("WebSocket closed:", event);
    });
    // 5. 监听 WebSocket 出错事件
    socket.addEventListener("error", function (event) {
        console.error("WebSocket error:", event);
    });

    function sendMessage() {
        let message = document.getElementById("messageInput").value;
        if (message) {
            socket.send(message);
        }
    }    </script>
</head>
<body>
<h1>WebSocket Example</h1>
<input type="text" id="messageInput" placeholder="Type your message here...">
<button onclick="sendMessage()">Send</button>
</body>
</html>  

连接成功

使用:

<?php

namespace App\Http\Controllers\api;

use Illuminate\Http\Request;

//php artisan make:controller api/MySocket
class MySocket extends BaseController
{
    protected $socket;
    public function __construct()
    {
        parent::__construct();
        $this->socket = new \App\extend\socket\MySocket();
    }

    /**
     * 绑定cid
     * @param Request $request
     */
    public function bind(Request $request){
        $this->socket->bind($request->client_id,auth('api')->id());
        apiSuccess();
    }

    /**
     * 给某个用户发送消息
     * @param Request $request
     */
    public function sendToUid(Request $request){
        $this->socket->sendToUid($request->uid,[
            'type'      => $request->type,
            'data' => $request->msg
        ]);
    }
}
MySocket.php
<?php
namespace App\extend\socket;

use GatewayClient\Gateway;

class MySocket{
    protected $gateway;
    public function __construct()
    {
        Gateway::$registerAddress = '127.0.0.1:1238';
        $this->gateway = new Gateway();
    }

    /**
     * 绑定cid
     * @param $client_id
     * @param $uid
     */
    public function bind($client_id,$uid) {
        $this->gateway->bindUid($client_id, $uid);
    }

    /**
     * 通过uid向用户发送消息
     * @param $uid
     * @param $message
     */
    public function sendToUid($uid,$message){
        $this->gateway->sendToUid($uid,json_encode($message));
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值