Данный чат в первую очередь задумывался как демонстрационный пример для моего
доклада про веб сокеты на РИТ-2010. То есть в первую очередь он создавался чтобы протестировать веб сокеты, проверить как будет работать event-driven система, состоящая из брауера, сервера и среды передачи данных. То, что это все хорошо работает по отдельности - уже давно
(
Read more... )
Этих вот unicode:XYZ функций не надо вовсе. Смысла в них ноль.
> Conn_Manager = spawn(fun() -> conn_manager() end),
Conn_manager = spawn(fun conn_manager/0),
> register(conn_mgr, Conn_Manager),
erl -man gen_server, уверяю, это просто для головы, и лучше для дела.
> continue_work() ->
> receive
Этот процессинг не имеет таймаута (after timeout), что есть плохо. Кроме того, при hot code upgrade процесс, крутящий этот цикл, будет грязно падать.
> process_flag(trap_exit, true),
Гораздо корректнее использовать erlang:monitor, и ловить 'DOWN', чем ловить 'EXIT' после выставления trap_exit. Так как erlang:monitor внизу и делается, рекомендую выбросить process_flag(trap_exit, true) вовсе из кода.
> conn_manager(CurrentState) ->
Опять же, дешевле, нагляднее и лучше использовать gen_server.
> Res = lists:keytake(Pid, 2, CurrentClients),
Дикая позиционщина. Что за "2"? Я бы весь блок внизу переписал так:
{set_opts, Pid, Session ( ... )
Reply
Reply
Reply
Я тоже решил двигаться в сторону OTP, пока некоторые детали не ясны, но будем разбираться.
Reply
Reply
Поздно заметил ваш комментарий - сейчас вообще не бываю в ЖЖ.
Нет, сейчас не занимаюсь Erlang - все же слишком узкая и специфичная ниша. Лично мне сейчас Golang видится более перспективным.
Reply
Leave a comment