use \Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;
require_once './Workerman/Autoloader.php';
define('PING_TIMEOUT', 5);
$task = new Worker();
// 进程启动时异步建立一个到www.baidu.com连接对象,并发送数据获取数据
$task->onWorkerStart = function($task)
{
$connection_to_baidu = new AsyncTcpConnection('ws://127.0.0.1:8080');
$connection_to_baidu->onWorkerStart = function($connection_to_baidu) {
echo "3333";
};
// 当连接建立成功时,发送http请求数据
$connection_to_baidu->onConnect = function($connection_to_baidu)
{
$connection_to_baidu->lastTime = time();
$connection_to_baidu->send("lcjn");//随便发点什么吧(触发)
echo "connect success\n";
};
$connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer)
{
$connection_to_baidu->lastTime = time();
echo $http_buffer;
};
$connection_to_baidu->onClose = function($connection_to_baidu)
{
echo "connection closed\n";
};
$connection_to_baidu->onError = function($connection_to_baidu, $code, $msg)
{
echo "Error code:$code msg:$msg\n";
};
$connection_to_baidu->connect();
};
// 运行worker
Worker::runAll();
比如现在没开8080端口
1 AsyncTcpConnection 连不上ws,应该在onError里面有响应事件啊,为什么什么都没收到
2 如果端口因为某些问题导致接收不到数据,应该怎么重新链接这个ws
1、tcp连接已经连上了,只是你发数据不符合websocket协议的数据格式,服务端无法识别。onError在tcp连接失败时会触发,而你的情况不符合触发条件。
注意:服务端用什么协议,客户端就得按照对应的协议格式去发送数据,不然二者无法通讯。就像你和老外讲中文,老外听不懂,老外只能接收英文一样道理
如果你裸tcp传输,服务端请使用tcp,不要用websocket。或者你用ws协议去连websocket服务,new AsyncTcpConnection('ws://xxxxx:xx');这样
2、客户端重新new WebSocket去重连
1 服务端是websocket ,当服务端没有启动,8080端口不通,启动这个程序(AsyncTcpConnection),这时候根本连不上ws吧,这时候会触发哪个事件onError
对
----------------------- WORKERMAN -----------------------------
Workerman version:3.3.2 PHP version:5.3.28
------------------------ WORKERS -------------------------------
worker listen processes status
none none 1 [OK]
Press Ctrl-C to quit. Start success.
启动之后一直是这个状态 什么也没输出啊,好像没走onError
你确认你的8080端口没监听么?你可以telnet你的8080端口试下
@1:我用的是windows版 下面是我截图 老大
@1:2客户端重新new WebSocket去重连 这个代码怎么去写 能提示下么
workerman-chat里面客户端有重连的逻辑,也就是在onClose的时候重新new WebSocket
[attach]346[/attach]
确实不通
也没有执行onError
好的,我看下
已经修复,请更新windows版本workerman。
linux版本没问题,不受影响。
好的
你好,我是这个月下的windows版本的workerman,为什么还出现上面的问题
@1772:我也是啊,发现有这个问题了,我是直接下zip的,难道要下git版的吗
3.3.5 - 3.3.9版本不小心把这个问题还原了,重新下载一份就好了,现在已经修复,修复后的版本名3.3.90
@1:下载新的版本就可以了,辛苦啦,老大。