關於workerman與thinkphp5.0結合使用
阿新 • • 發佈:2019-01-01
thinkphp5.0的看雲文件上有了一點說明 說明文件
這裡主要說一下遇到的問題。
安裝部分,可以自行百度,然後直接複製文件中的命令,直接安裝就好。安裝完畢以後,thinkphp5.0 根目錄中的wendor目錄中將多出一個
“workerman”目錄,以及vendor\topthink目錄中,多出“think-worker”目錄。
關於server.php
文件說,放到專案根目錄,其實這個檔案放到哪個目錄並沒有什麼關係。通過命令列訪問到這個檔案,然後執行它就可以了。關鍵是要保證其中的程式碼:
<?php
define('APP_PATH', __DIR__ . '/application/' );
define('BIND_MODULE','push/Worker');
// 載入框架引導檔案
require __DIR__ . '/thinkphp/start.php';
訪問的地址一定要正確,確保每一行程式碼中訪問的目錄都是可以正常訪問到。不然執行中會提示找不到控制器或者模組之類的資訊。
關於新建的模組和控制器:
按著server.php檔案中的定義,首先確保APP_PATH常量定義的目錄正確,只有此處定義正常,系統才能順利找到push模組和Worker控制器,然後新建模組push,控制器Worker
Worker.php
<?php
namespace app\push\controller;
use think\worker\Server;
class Worker extends Server
{
protected $socket = 'websocket://push.app:2346';
/**
* 收到資訊
* @param $connection
* @param $data
*/
public function onMessage($connection, $data)
{
$connection->send('我收到你的資訊了');
}
/**
* 當連線建立時觸發的回撥函式
* @param $connection
*/
public function onConnect ($connection)
{
}
/**
* 當連線斷開時觸發的回撥函式
* @param $connection
*/
public function onClose($connection)
{
}
/**
* 當客戶端的連線上發生錯誤時觸發
* @param $connection
* @param $code
* @param $msg
*/
public function onError($connection, $code, $msg)
{
echo "error $code $msg\n";
}
/**
* 每個程序啟動
* @param $worker
*/
public function onWorkerStart($worker)
{
}
}
這裡不用擔心
use think\worker\Server;
會找不到地方,系統會自動找到vendor\topthink目錄當中的檔案
關於訪問
ws = new WebSocket("ws://mall.hi-fm.cn:2346");
ws.onopen = function() {
alert("連線成功");
ws.send('tom');
alert("給服務端傳送一個字串:tom");
};
ws.onmessage = function(e) {
alert("收到服務端的訊息:" + e.data);
};
這裡要注意
ws = new WebSocket(“ws://mall.hi-fm.cn:2346”);
你自己的域名不要寫錯。不要http://頭。
訪問的時候,要在你指定的域名下,比如例子中的域名mall.hi-fm.cn中去訪問你啟用的Socket服務才可能有迴應:
有人提供了一個demo,可以下載看一下。DEMO