ビデオファイルから wowza メディアサーバーにロードされたストリームを発行する Red5 クライアント実装があります。問題は、ストリーム名が大きすぎる場合 (約 90 シンボルを超える場合)、クライアントがそれを公開せず、サイレントに失敗することです。クライアントから期待される他のすべてのアクションが実行されます。サーバーに接続し、ストリームを作成します。ただし、ストリームを公開することはありません。対応する RTMP メッセージが表示されず、結果の反応が wowza のログに表示されません。
クライアントのデバッグを試み、SocketChannel への書き込みが開始されるまで実行を追跡しました。短い名前のストリーム (公開しても問題ありません) を実行する場合と、「公開する」RTMP コマンドが送信されない長い名前のストリームを実行する場合は、すべて同じです。
質問は次のとおりです。
調子はどう?
例外がスローされずに SocketChannel にいくつかのバイトを書き込んだ場合、対応するメッセージが送信されたことを保証しますか?
例外がスローされずに SocketChannel にいくつかのバイトを書き込んだ場合、バイトが実際にどこかに書き込まれたかどうかを OS (私の場合は MACOS) で確認できますか? 私は、WireShark によって、このデータが送信されなかったことを知っています。
更新...さらに奇妙なことに、「大きな」パケットを送信した後、小さなパケットを送信しても役に立ちません。より長いパケットがソケットに送信された後は、パケットを送信できません。