Ответ 1
Как упоминалось Артем Тихомиров (автор вопроса) в своем собственном ответе, мой ответ (я держу там ниже как wiki, для архива).
Настоящий ответ был дано Риком Токио относительно ошибки в Linux и задокументирован в этот поток.
Единственная причина, по которой мой ответ "выбран", состоит в том, что Артем не выбирал другого ответа (или своего ответа) до 7-дневных ограничений, предоставляя мне (первый и самый верхний ответ) половину пунктов награды (75 из 150) автоматически, как описано в этой записи в блоге SO.
Первое свинец:
Если клиент является базовым компонентом, ему необходимо [правильно обрабатывать события подключения] [9].
Когда вы разрабатываете приложения, имейте в виду, что использование компонентов вводит явные события
onConnectAccept
иonConnectReject
.Вам нужно включить код для обработки этих событий.
Когда вы используете компоненты, вы должны изменить операторapplication.onConnect
в своем серверном коде, чтобы включить обработчики событийapplication.onConnectAccept
иapplication.onConnectReject
.
Последняя строка (в порядке выполнения) вашего обработчикаonConnect
должна быть либоapplication.acceptConnection()
, либоapplication.rejectConnection()
.Если вашему приложению требуется дополнительный код, следуя явным методам
acceptConnection()
илиrejectConnection()
, таким как сообщение о том, что пользователю предоставлено или запрещено разрешение на приложение, вы должны поместить этот код вapplication.onConnectAccept
илиapplication.onConnectReject
.СОВЕТ. Если вы не используете медиакомпоненты, вы не можете использовать
application.onConnectAccept
иapplication.onConnectReject
.
Затем вы можете проверить любое сообщение об ошибке на панели вывода Flash, например:
Error #2044: NetStatusEvent non pris en charge : level=error, code=NetStream.Play.Failed
at MethodInfo-1()
Error #2044: NetStatusEvent non pris en charge : level=error, code=NetStream.Record.NoAccess
at MethodInfo-1()
Это означало бы исключение сервера, не принимаемое во внимание клиентом, заставляя неожиданный выход.
Если клиент считывает поток с сервера, он должен убедиться:
- NetConnection преуспел
- NetStreams (вход и выход) прослушивает NET_STATUS
Хороший код понравится:
var status:Function = function( e:NetStatusEvent ):void
{
trace( "status : " + e.info.code ) ;
if ( e.info.code == "NetConnection.Connect.Success" )
{
streamOut = new NetStream( nc ) ;
streamOut.addEventListener( NetStatusEvent.NET_STATUS , status ) ;
streamIn = new NetStream( nc ) ;
streamIn.addEventListener( NetStatusEvent.NET_STATUS , status ) ;
streamOut.attachCamera( cam ) ;
video.attachNetStream( streamIn ) ;
streamOut.publish( "private" ) ;
streamIn.play( "private" ) ;
}
}
Поскольку новые версии FlashPlayer распространяют такое исключение, их необходимо отслеживать, а затем ловить в клиентском приложении