我用thinkphp3.2自動加載的方式整合workerman,加載成功,但是用微信小程序開啟websocket連接時workerman端就會自動關閉連接,錯誤提示為error package. package_length=false,如附件所示,請高手賜教
!
用錯協(xié)議了,應該是
websocket://0.0.0.0:4433
監(jiān)聽最好用0.0.0.0,只監(jiān)聽127.0.0.1只能本機連,其它服務器或者外網(wǎng)是連不上你的websocket服務的。
參考手冊:http://doc.workerman.net/315128
ws是workerman用做客戶端去連別的websocket服務端用的協(xié)議,參考手冊 http://doc.workerman.net/315306
恩,我想用ws://0.0.0.0:4433,因為想用在微信小程序的調試上,按照您的建議并結合手冊改了下,會有error: connect 0.0.0.0:4433 fail after 0.0016 seconds的提示,請幫忙看下
<?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("無法直接訪問,請通過命令行啟動");
}
TcpConnection::$maxPackageSize = 1024000;
Worker::$daemonize=true;
$worker = new \Workerman\Worker();
$worker->name='HHN';
$worker->count=1;
// 當收到客戶端發(fā)來的數(shù)據(jù)后返回hello $data給客戶端
$worker->onWorkerStart = function($worker){
echo "Worker starting...\n";
// 以websocket協(xié)議連接遠程websocket服務器
$ws_connection = new AsyncTcpConnection('ws://0.0.0.0:4433');
// 連上后發(fā)送hello字符串
$ws_connection->onConnect = function($connection){
$connection->send('hello');
};
// 遠程websocket服務器發(fā)來消息時
$ws_connection->onMessage = function($connection, $data){
echo "recv: $data\n";
};
// 連接上發(fā)生錯誤時,一般是連接遠程websocket服務器失敗錯誤
$ws_connection->onError = function($connection, $code, $msg){
echo "error: $msg\n";
};
// 當連接遠程websocket服務器的連接斷開時
$ws_connection->onClose = function($connection){
echo "connection closed\n";
};
// 設置好以上各種回調后,執(zhí)行連接操作
$ws_connection->connect();
};
$worker->onMessage = function($connection, $data)
{
// 向客戶端發(fā)送hello $data
$connection->send('hello '.$data);
};
$worker->onClose = function($connection)
{
echo "connection 關閉\n";
};
// 運行worker
Worker::runAll();
}
}