Чат на Erlang и Web Sockets

Apr 16, 2010 19:22

Данный чат в первую очередь задумывался как демонстрационный пример для моего доклада про веб сокеты на РИТ-2010. То есть в первую очередь он создавался чтобы протестировать веб сокеты, проверить как будет работать event-driven система, состоящая из брауера, сервера и среды передачи данных. То, что это все хорошо работает по отдельности - уже давно ( Read more... )

event-driven, чат, эрланг, erlang, chat, web sockets

Leave a comment

Comments 9

lionet April 17 2010, 06:53:19 UTC
> -define(ub(X), unicode:characters_to_binary(X)).

Этих вот 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

elisitsky April 17 2010, 08:10:21 UTC
Огромное спасибо, Лев ( ... )

Reply

cy6erbr4in April 19 2010, 21:39:02 UTC
я форкнул проект на гитхабе, поковыряю на предмет "включения" otp :) как будет что интересного, дам знать...

Reply

elisitsky April 20 2010, 08:21:53 UTC
Обязательно расскажите.
Я тоже решил двигаться в сторону OTP, пока некоторые детали не ясны, но будем разбираться.

Reply


(The comment has been removed)

elisitsky April 20 2010, 08:20:44 UTC
Какая версия оперы? В виндовой 10.51 есть проблема - она не выдерживает потока событий при загрузке истории чата. Вероятно проблема в кешировании ДОМ.
Есть мысль как обойти, но буду это делать уже в новой версии.
А что у вас показывается? Какие ошибки?

Тестировал во все ослах - все отлично даже в 6.

Reply

(The comment has been removed)

elisitsky April 20 2010, 08:48:21 UTC
У меня маковская 10.10 - она просто тупит, но работает. А у народа с вин 10.51 были проблемы с загрузкой истории, часть сообщений не доходила.
Тестировал на 8 осле Вынь7 - все четко.

Reply


Leave a comment

Up