【悬赏20凯币】微信小程序wx.onSocketMessage

综合技术   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2023-4-19

微信小程序的API,wx.onSocketMessage监听有问题,只能监听到一跳,之后就监听不到了,发送消息正常,求解决方法

11楼
十三大大 2023-4-20
收回 上面的协议问题微信 也是 ws:// 我这边服务端也是用循环发送信息 客服端也能收到 那就看你服务端循环发送信息逻辑 是否有误
12楼
十三大大 2023-4-20
你可以发下你的demo 代码可以复现的 我这边还有时间可以研究
13楼
默认昵称 2023-4-20
后端用的PHP,这是消息接收处理代码,第一个发送的消息微信小程序收不到,第二个可以收到

14楼
默认昵称 2023-4-20
// 这个微信接收不到,其他可以
public function onMessage(ConnectionInterface $from, $msg)
{
// 自定义变量alluserData内存储的所有连接信息
global $alluserData;
// 心跳消息不进行处理
if($msg == 'wssheartbeta'){
return;
}
echo sprintf('连接 (%d) 发送消息 "%s" 到 (%d) 个其他连接 ' . "
", $from->resourceId, $msg, count($this->clients) - 1);

// 遍历所有房间
foreach($alluserData as $homeId => $homeData){
// 遍历房间内所有用户id
foreach ($homeData["user"] as $userId){
// 判断房间内是否存在用户
if($from->resourceId == $userId){
// 循环查询房间内用户id
foreach ($homeData["user"] as $homeuserId){
// 遍历所有连接
foreach ($this->clients as $client){
// 判断连接id和用户id相同
if($client->resourceId == $homeuserId){
$msg = json_decode($msg, true);
// 消息类型为弹幕
if($msg["type"] == "msg"){
$client->send("服务器收到消息");
}
}
}

}

}
}

}
}



// 这是所有都可以接收到消息的方法
public function onMessage(ConnectionInterface $from, $msg)
{

// 心跳消息不进行处理
if($msg == 'wssheartbeta'){
return;
}

// 遍历所有连接
foreach ($this->clients as $client){

$client->send("服务器收到消息");

}

}
15楼
默认昵称 2023-4-20
后端用的ratchet框架实现的websocket
16楼
十三大大 2023-4-20
我看你的循环是满复杂的
一个笨方法 再每次循环下 打印一下
看看是哪一次循环出现了问题
17楼
默认昵称 2023-4-20
循环代码没问题,网页端,uni端都能监听到,只有微信端监听不到
1 2

评论

登录后才可发表内容
  • 主题

    1022

  • 帖子

    24595

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0494s Mem:2100Kb