【问题标题】:PHP Socket Send Message On Disconnect?PHP Socket在断开连接时发送消息?
【发布时间】:2012-09-28 04:15:09
【问题描述】:

我有一个用 PHP 创建的套接字,我在 flash/as3 中连接到该套接字。它工作了 99%,但是...

$bytes = socket_recv($socket, $buffer, 2048, 0);
if ($bytes == 0) {
    //User disconnects
    $index = array_search($socket, $read_sockets);
    $tehEC = socket_last_error();
    $CID = $read_sockets[$index];
    $DNAME = $DB->db->query("SELECT * FROM chat_online WHERE connectid='$CID'");
    $BROW = $DB->db->fetch_array($DNAME);
    $BNAME = $BROW['user_name'];
    $DB->db->query("DELETE FROM chat_online WHERE connectid='$CID'");
    echo "dc " . $tehEC . "\n";
    send_Message($allclients, $socket, $BNAME . ": /disconnected " . $BNAME); <-- WILL NOT SEND
    unset($read_sockets[$index]);
    send_Message($allclients, $socket, $BNAME . ": /disconnected " . $BNAME); <-- WILL NOT SEND 
    socket_close($socket);
}

因此,当用户断开连接时,我已经能够触发一个事件,但是那条不发送的线路让我的生活真的很艰难:(有什么帮助吗?我需要它来将它发送给其他客户,这样我就可以删除用户。同样,我怎样才能让套接字服务器向所有仍然在线的客户端发送消息,以便他们知道从列表中删除断开连接的用户。

【问题讨论】:

  • 你在 send_Message() 中做了什么? $allclients 是什么?您正在传递 $socket - 您是否将消息发送到该 $socket?如果是,那就是问题所在 - 您正在发送给断开连接的用户。
  • Crossdomain.xml 没有被处理,我认为 master 也没有设置。

标签: php actionscript-3 flash sockets


【解决方案1】:

实际上问题是我需要将 chr(0) 添加到字符串的末尾才能发送。不过感谢您的回复。

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2011-01-12
    • 2016-01-30
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多