【问题标题】:PHP stream_socket_client and facebook chatPHP stream_socket_client 和 facebook 聊天
【发布时间】:2011-03-27 14:16:38
【问题描述】:
$fp         = stream_socket_client("tcp://chat.facebook.com:5222", $errno, $errstr, 20);

fwrite($fp, '<stream:stream to="chat.facebook.com" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" version="1.0" />' . PHP_EOL);

$temp1      = fgets($fp);

fwrite($fp, '<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="X-FACEBOOK-PLATFORM"></auth>');

$temp2      = fgets($fp);

fclose($fp);

die(var_dump( $temp1, $temp2 ));

导致 $temp2 false 结果的原因是什么?

    string(365) "<?xml version="1.0"?><stream:stream id="247B12CF" from="chat.facebook.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xml:lang="en"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features></stream:stream>"
bool(false)

【问题讨论】:

    标签: php facebook xmpp


    【解决方案1】:

    问题是你的stream:stream 行应该只是一个开始标签,而不是一个完整的元素。在您的第一个 fwrite 调用中删除 / 作为倒数第二个字符。当您发送完整的根元素而不是开始标记时,服务器会断开您的连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 2010-11-05
      • 2013-03-26
      • 1970-01-01
      相关资源
      最近更新 更多