1. 程式人生 > >關於workerman與thinkphp5.0結合使用

關於workerman與thinkphp5.0結合使用

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