Имам клиентска реализация Red5, която публикува потоци, заредени от видеофайл към нашия wowza медиен сървър. Проблемът е, че ако името на потока е твърде голямо - приблизително повече от 90 символа - клиентът не го публикува и се проваля тихо. Всички други действия, очаквани от клиента, са изпълнени: той се свързва със сървъра и създава поток. Но никога не публикува потока. Не виждам съответно RTMP съобщение и не виждам резултатна реакция в регистрационните файлове на wowza.
Опитах се да отстраня грешки в клиента и проследих изпълнението, докато не започне да пише в SocketChannel. Всичко е същото за случаите на изпълнение на по-къс наименуван поток (който публикува добре) и поток с дълго име, чиято RTMP команда "за публикуване" никога не се изпраща.
Въпросите са:
какво става?
ако съм записал някои байтове в SocketChannel без хвърлени изключения - това гарантира ли, че съответното съобщение е изпратено?
ако съм записал някои байтове в SocketChannel без никакви изключения - мога ли да проверя с помощта на моята ОС (MACOS в моя случай) дали байтовете наистина са записани някъде? Въпреки че знам, чрез WireShark, че тази част от данните никога не е била изпращана.
UPDATE ...и което е още по-странно - след изпращане на "големия" пакет изпращането на по-малък не помага. Не могат да се изпращат пакети, след като към сокета е изпратен пакет с по-голяма дължина.