2015-08-31 3 views
2

Я пытаюсь ограничить потоки для каждого пользователя, и моя идея состояла в том, чтобы хранить информацию о потоке видео пользователя или нет в базе данных. Затем, когда будет создан сеанс, я проверил бы базу данных и утвердил/отклонил поток.Wowza - onHTTPCupertinoStreamingSessionCreate, вызываемый несколько раз

Моя проблема заключается в том, что onHTTPCupertinoStreamingSessionCreate запускается несколько раз. Я понятия не имею, почему и как это возможно. Это моя логика короче:

public void onHTTPCupertinoStreamingSessionCreate(HTTPStreamerSessionCupertino httpSession) { 
    if(alreadyStreaming(userID)){ 
     httpSession.rejectSession(); 
     return; 
    } 
    else{ 
     setStreamActiveInDB(userID, true); 
    } 
} 

public void onHTTPCupertinoStreamingSessionDestroy(HTTPStreamerSessionCupertino httpSession) { 
    setStreamActiveInDB(userID, false); 
} 

Любая идея о том, как проверить, почему огневые это событие несколько раз, или еще одна идея, как ограничить количество потоков для каждого пользователя?

ответ

3

Я также столкнулся с этой проблемой, и один конкретный сценарий состоял в том, что потоковая передача HTTP была в мобильном браузере. Пользователь нажимает на ссылку, браузер не знает тип содержимого, поэтому он подключается, что вызывает новый сеанс HTTP, и, таким образом, звонок на номер onHTTPCupertinoStreamingSessionCreate. Затем браузер получает ответ и понимает, что это видео, поэтому он запускает игрока. Игрок запрашивает манифест, это второй сеанс HTTP. Я видел, что третий сеанс запускается, когда игрок начинает загружать видеоролики. Затем первые 2 сеанса умирают в конце концов, а третий выживает. Я должен был сделать различные трюки, чтобы соединить эти сеансы и рассчитать их как один сеанс. Надеюсь, это даст вам представление, почему это происходит. Итак, новый сеанс HTTP не равен новому подключенному проигрывателю в целом.

+0

Понял, спасибо за помощь. Я решил изменить свою логику и забыть о попытке ограничить количество пользователей в потоке, поскольку купетино в целом дает мне задержку в событиях, выпущенных около 40 секунд. Заставить пользователя ждать 40 секунд между потоками слишком долго, поэтому я не могу ограничить один поток одним пользователем. Возможно, я делал это неправильно, но это непригодно, поскольку я попробовал это сейчас. – Dexa

+0

Хорошо. Можете ли вы принять мой ответ тогда? :-) – jabal