我用thinkphp3.2自動(dòng)加載的方式整合workerman,加載成功,但是用微信小程序開(kāi)啟websocket連接時(shí)workerman端就會(huì)自動(dòng)關(guān)閉連接,錯(cuò)誤提示為error package. package_length=false,如附件所示,請(qǐng)高手賜教
!
用錯(cuò)協(xié)議了,應(yīng)該是
websocket://0.0.0.0:4433
監(jiān)聽(tīng)最好用0.0.0.0,只監(jiān)聽(tīng)127.0.0.1只能本機(jī)連,其它服務(wù)器或者外網(wǎng)是連不上你的websocket服務(wù)的。
參考手冊(cè):http://doc.workerman.net/315128
ws是workerman用做客戶(hù)端去連別的websocket服務(wù)端用的協(xié)議,參考手冊(cè) http://doc.workerman.net/315306
恩,我想用ws://0.0.0.0:4433,因?yàn)橄胗迷谖⑿判〕绦虻恼{(diào)試上,按照您的建議并結(jié)合手冊(cè)改了下,會(huì)有error: connect 0.0.0.0:4433 fail after 0.0016 seconds的提示,請(qǐng)幫忙看下
<?php
namespace Home\Controller;
use Think\Controller;
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Lib\Timer;
require_once 'C:/wamp/www/lei/ThinkPHP/Library/Workerman/Autoloader.class.php';
class WorkerManController{
public function index(){
if(!IS_CLI){
die("無(wú)法直接訪(fǎng)問(wèn),請(qǐng)通過(guò)命令行啟動(dòng)");
}
TcpConnection::$maxPackageSize = 1024000;
Worker::$daemonize=true;
$worker = new \Workerman\Worker();
$worker->name='HHN';
$worker->count=1;
// 當(dāng)收到客戶(hù)端發(fā)來(lái)的數(shù)據(jù)后返回hello $data給客戶(hù)端
$worker->onWorkerStart = function($worker){
echo "Worker starting...\n";
// 以websocket協(xié)議連接遠(yuǎn)程websocket服務(wù)器
$ws_connection = new AsyncTcpConnection('ws://0.0.0.0:4433');
// 連上后發(fā)送hello字符串
$ws_connection->onConnect = function($connection){
$connection->send('hello');
};
// 遠(yuǎn)程websocket服務(wù)器發(fā)來(lái)消息時(shí)
$ws_connection->onMessage = function($connection, $data){
echo "recv: $data\n";
};
// 連接上發(fā)生錯(cuò)誤時(shí),一般是連接遠(yuǎn)程websocket服務(wù)器失敗錯(cuò)誤
$ws_connection->onError = function($connection, $code, $msg){
echo "error: $msg\n";
};
// 當(dāng)連接遠(yuǎn)程websocket服務(wù)器的連接斷開(kāi)時(shí)
$ws_connection->onClose = function($connection){
echo "connection closed\n";
};
// 設(shè)置好以上各種回調(diào)后,執(zhí)行連接操作
$ws_connection->connect();
};
$worker->onMessage = function($connection, $data)
{
// 向客戶(hù)端發(fā)送hello $data
$connection->send('hello '.$data);
};
$worker->onClose = function($connection)
{
echo "connection 關(guān)閉\n";
};
// 運(yùn)行worker
Worker::runAll();
}
}