按照文档分离mvc层写逻辑出现stream_socket_sendto(): Զ�����ǿ�ȹر��һ�����е���ӡ�

在调用 Gateway::bindUid()的时候一直报这个错 刚开始有时候还可以通过,现在都不行了,转码也解决不了这个乱码的问题 ,不知道怎么定位这个bug,有遇到过这个坑的兄dei麻烦帮帮忙 ,两天都没解决掉 很烦
1524533807(1).jpg

已邀请:

maq

赞同来自:

你在哪里看到的这个乱码报错信息?浏览器里还是命令行窗口?

SimplerWorker

赞同来自:


namespace app\worker\controller;
use \GatewayWorker\Lib\Gateway;
use think\Db;
use think\Controller;

class Index extends Controller{
public function initUser(){
$uid = input('post.uid');
$client_id = input('post.client_id');
// $uid = $uid ? $uid : 1;
// $client_id = $client_id ? $client_id : "7f00000108fc00000006";
Gateway::$registerAddress = '0.0.0.0:1236';
Gateway::bindUid($client_id, $uid); // 执行到这里就报错了
Gateway::joinGroup($client_id, $uid);
dump($uid);
dump($client_id);
}
public function doSomeThing(){
$arr = Db::query("select * from sw_user");
$json = json_encode($arr,true);
$uid = input('post.uid');
dump($json);
if(!is_array($json)){
// Gateway::sendToAll($json);
// Gateway::sendToClient($client_id,$json);
Gateway::sendToUid($uid,$json);
Gateway::sendToGroup($uid,$json);
}
}
}

walkor

赞同来自:

看下gatewayClient版本和gateway版本是否一致,不一致无法通讯

SimplerWorker

赞同来自:

我把问题具体描述下, thinkPHP5 使用composer安装了workerman、workerman-for-win、gatewayworker、gatewayworker-for-win,然后网页和gateway正常建立webSocket连接,根据gatewayworker文档,网页给thinkPHP5异步发送init请求时,出现了如下问题:
  1. Windows开机后首次执行 php register.php gateway.php businessworker.php , 多个网页之间能正常通讯(通过文档的集成MVC的流程)
  2. 当我关闭 cmd , 再次执行 php register.php gateway.php businessworker.php 时,多个网页重新刷新网页,执行到 Gateway::bindUid($client_id, $uid); 这里就报错了,报错跟楼主的一样
  3. 遇到这问题,每次我都要重启电脑,才能正常,求解、

( 我的代码)

namespace app\worker\controller;
use \GatewayWorker\Lib\Gateway;
use think\Db;
use think\Controller;

class Index extends Controller{
public function initUser(){
$uid = input('post.uid');
$client_id = input('post.client_id');
// $uid = $uid ? $uid : 1;
// $client_id = $client_id ? $client_id : "7f00000108fc00000006";
Gateway::$registerAddress = '127.0.0.1:1236';
Gateway::bindUid($client_id, $uid); // 执行到这里就报错了
Gateway::joinGroup($client_id, $uid);
dump($uid);
dump($client_id);
}
public function doSomeThing(){
$arr = Db::query("select * from sw_user");
$json = json_encode($arr,true);
$uid = input('post.uid');
dump($json);
if(!is_array($json)){
// Gateway::sendToAll($json);
// Gateway::sendToClient($client_id,$json);
Gateway::sendToUid($uid,$json);
Gateway::sendToGroup($uid,$json);
}
}
}

bianchao1

赞同来自:

我遇到这个问题,是windows系统,register正常启动后ctrl+c关闭了,再启动register时,thinkPHP框架内的gatewayclient就无法链接register了,这时候重启一下Apache,就又可以链接register的端口了。感觉还是windows系统或者是Apache(我用的PHPstudy)的问题,希望遇到这个问题的人,试一下方法是不是有效,也希望walkor查找下问题原因。
我用的最新的gatewayworker(win&linux)

要回复问题请先登录注册