FreeRadius: Error: Received conflicting packet from client
Ошибка возникает когда к радиусу обращается слишком много клиентов, и он не успевает обработать все запросы за время TimeOut.
Решением может служить увеличение времени на повторный запрос ответа от freeradius. Например в mpd за этот параметр отвечает :
1 |
set radius timeout 50 |
wss WebSocket через proxy apache
Возникла необходимость поднять соединение wss Websocket из браузера на странице с протоколом https. Причем сертификат для страницы — самоподписанный. Соответственно при первом заходе на такую страницу, браузер сообщает что страница не небезопасна и т.п. Когда пользователь соглашается, что согласен посетить данную страницу, открывается сайт, и скрипт на сайте пытается установить wss соединение с сервером по тому-же адресу, что и сам сайт. И соответственно не получается, т.к. пользователь страницы не одобрил это не безопасное соединение. Если он откроет в браузере ссылку вида https://websocketserver:8100, и согласится, то соединение будет установлено корректно. Но заставлять пользователя перед работой на сайте открывать еще одну страницу — бред. Можно поступить по другому: не заметно перенаправить соединение вида https://websocketserver/wss/ на ws://websocketserver:8100 . И вуаля — соединение теперь устанавливается без лишних вопросов.
Для того чтобы это всё работало, в настройках апача нужно включить модули: proxy_module и proxy_wstunnel_module. И в настройках сайта соответственно прописать чтото типа:
ProxyPass /chat/ ws://noc.dcedwedwe.ru:8100/
ProxyPassReverse /chat/ ws://noc.dcedwedwe.ru:8100/
Книги Олега Роя, «Джинглики» в складчину.
Ищу компаньонов в складчине, на покупку электронной версии серии книг Олега Роя «Джинглики». Чем нас больше, тем дешевле обойдется.
Динамическая загрузка скриптов на JavaScript
В том случае если необходимо динамически подгрузить на страницу какие-то скрипты, возможно использовать например прообраз следующего кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
window.onload=function(){ if (typeof jQuery == 'undefined') { dhtmlLoadScript("https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"); }; //проверяем, а подгрузился ли juery? var timerId = setInterval(function() { if (typeof jQuery == 'undefined'){ console.log("--еще не догрузился jquery..ждем.."); } else { dhtmlLoadScript("http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"); console.log("--вроде jquery загрузился, гружу jquery-ui.."); clearInterval(timerId); var timerId2 = setInterval(function() { if (typeof $.ui == 'undefined'){ console.log("--еще не догрузился jquery-ui..ждем.."); } else { clearInterval(timerId2); console.log("--вроде jquery-ui загрузился, инициализирую чат.."); mainchat(); }; },1000); }; }, 1000); }; function dhtmlLoadScript(url){ var e = document.createElement("script"); e.src = url; e.type="text/javascript"; document.getElementsByTagName("head")[0].appendChild(e); } |
в данном случае в целях кроссбраузерности, используется проверка по таймеру, загрузился код или нет, ибо в файрефоксе идет последовательная загрузка кода, а в хроме паралельная. В связи с чем, может возникать ситуация дальнейшего выполнения кода, при еще не подгруженных скриптах.