2012-01-28 9 views
0

phpを使用してXMPPサーバーに接続してメッセージを送信するメッセージを送信する しかし、メッセージの送受信に問題があります.. 質問は私が再接続して、ユーザー名/パスワードを要求するたびに(メッセージを送信する) 再接続を避けるにはどうすればよいですか?XMPPとPHPストリーミング

これは私が接続する方法である:

$this->_socket = fsockopen("sever.tld", 5222, $errno, $errstr, 30); 

私はこのようなfwriteの使用してメッセージを送信します。

fwrite($Socket, $data); 

私はこのような関数freadを使用してメッセージを読む:

$response = @fread($this->_socket, 1024); 
+0

どのように接続していますか?いくつかのコードを教えてください。 –

+0

投稿にコードを追加しました –

答えて

3

アプローチあなたは長期的に使用することはできません。

PHPインスタンスがブラウザクライアントにページを送信し終えると、インスタンスが実質的に存在しなくなるため、XMPPサーバーへの接続は閉じられます。つまり、すべての状態(TLSセッション、認証、& c)が失われます。

このようにすれば、すべてのページの読み込み時に再接続して再認証する必要があります。

このようにしないでください。この目的のために設計されたXMPP over BOSHなどのXMPPサーバー側アダプタ、またはPHPインスタンスが共有するデーモンやより長寿命のプロセスを介したHTTPサーバー側永続接続を使用できます。

while (!feof($this->_socket)) { 

} 

そして、中にあなたのロジックのすべてを置く:

+0

残念ながら、私はXMPPサーバー側にアクセスできないです.HTTPサーバー側でしかアクセスできません。 –

+0

@ user1175643問題があります。 PHPインスタンスの有効期間はXMPPセッションの有効期間よりも短くなりますが、TCP接続が閉じられるとXMPPセッションは破棄されます。ここでゲートキーパーとして行動する必要があります。 – Borealid

+0

そのための準備ができているパッケージはありますか? –

1

は、決算からの接続を防ぐために、次のループを使用します。接続がまだアクティブな間は、無限ループで実行されます(これは、あなたがそれを終了するまでです)。