1-安裝workerman
首先通過 composer 安裝
composer require topthink/think-worker -vvv
如果報(bào)錯(cuò):
Installation failed, reverting ./composer.json to its original cont
則使用
composer require topthink/think-worker=1.0.* -vvv
如果需要在window下做服務(wù)端,還需要
composer require workerman/workerman-for-win -vvv
2-在thinkphp5根目錄(即與application同級(jí)目錄)創(chuàng)建server.php,編輯一下內(nèi)容。 server.php 文件內(nèi)容
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE','push/Worker');
// 加載框架引導(dǎo)文件
require __DIR__ . '/thinkphp/start.php';
3-新建模塊和控制器
創(chuàng)建workerman的controller,命名為Worker.php。在application/push/controller,目錄不存在自行創(chuàng)建。添加以下內(nèi)容:
4-Worker.php。文件的內(nèi)容
<?php
namespace app\push\controller;
use think\worker\Server;
class Worker extends Server
{
protected $socket = 'websocket://127.0.0.1:2346';
/**
* 收到信息
* @param $connection
* @param $data
*/
public function onMessage($connection, $data)
{
$connection->send('我收到你的信息了');
}
/**
* 當(dāng)連接建立時(shí)觸發(fā)的回調(diào)函數(shù)
* @param $connection
*/
public function onConnect($connection)
{
}
/**
* 當(dāng)連接斷開時(shí)觸發(fā)的回調(diào)函數(shù)
* @param $connection
*/
public function onClose($connection)
{
}
/**
* 當(dāng)客戶端的連接上發(fā)生錯(cuò)誤時(shí)觸發(fā)
* @param $connection
* @param $code
* @param $msg
*/
public function onError($connection, $code, $msg)
{
echo "error $code $msg\n";
}
/**
* 每個(gè)進(jìn)程啟動(dòng)
* @param $worker
*/
public function onWorkerStart($worker)
{
}
}
5-運(yùn)行server.php
6- 新建html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
<body>
<script>
ws = new WebSocket("ws://127.0.0.1:2346");
ws.onopen = function() {
alert("連接成功");
ws.send('tom');
alert("給服務(wù)端發(fā)送一個(gè)字符串:tom");
};
ws.onmessage = function(e) {
alert("收到服務(wù)端的消息:" + e.data);
};
</script>
</body>
</html>
原文:https://blog.csdn.net/qq_37322178/article/details/83715141