Erlang веб-дистрибуция - PullRequest
       30

Erlang веб-дистрибуция

1 голос
/ 16 июля 2011

В не веб-системе чата сервер различает своих клиентов по их PID, верно?И что следует использовать, чтобы различать клиентов в сетевой системе чата?

Заранее

Ответы [ 3 ]

4 голосов
/ 20 июля 2011

Тот факт, что вы используете веб-сервер, не должен сильно влиять на вашу модель.Вы все еще строите чат.Вы также не хотите, чтобы ваши чаты были слишком тесно связаны с процессом, управляющим их HTTP-соединением.HTTP-соединения эфемерны, даже если все идет хорошо и вы используете длительный опрос, нет никакой гарантии, что соединение будет повторно использовано с Keep-Alive для следующего длинного опроса.Пользователь также может захотеть открыть один и тот же чат в нескольких окнах браузера, на нескольких компьютерах и т. Д.

Я не внимательно изучил ни одно из них, но вы не первый, кто создал веб-чатс Erlang:

1 голос
/ 17 июля 2011

Я думаю, что путаница возникает из-за того, что серверный процесс Erlang должен оставаться активным для каждого отдельного клиента.Может, но Mochiweb не делает этого по умолчанию, если я не ошибаюсь.Это просто порождает новый процесс для каждого запроса.Если вы хотите иметь долгоживущее двунаправленное соединение с клиентским сервером <->, вы можете сделать это, например:

  • , отправляя идентификатор клиента с каждым запросом и сопоставляя его с долгоживущим процессомна сервере.Процесс будет поддерживать состояние серверов, и вы можете вызывать методы на нем.Это все еще тянуть и не толкать, хотя.
  • использовать реализации веб-сокетов.Не уверен, есть ли у Mochiweb, но есть и другие HTTP-серверы Erlang, такие как Misultin и Yaws.Я полагаю, что для сетевой системы чата веб-сокеты отлично подойдут.
0 голосов
/ 17 июля 2011

Для очень тривиального примера системы сетевого чата с использованием веб-сокетов и Misultin вы можете проверить эту демонстрацию чата . Он был написан для демонстрации идеи и не очень элегантно, но он действительно работает.

...