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));
}
}