Erlang网络分发

时间:2011-07-16 17:30:53

标签: erlang chat distributed

在基于 -web的聊天系统上,服务器通过其PID区分其客户端,对吧?在基于网络的聊天系统中应该用什么来区分客户?

Thnx提前

3 个答案:

答案 0 :(得分:4)

您使用Web服务器的事实不应该对您的模型有太大的改变。你还在建聊天。您也不希望让您的聊天过多地与管理其HTTP连接的过程相关联。 HTTP连接是短暂的,即使一切进展顺利,并且您正在使用长轮询,也无法保证连接将与Keep-Alive一起重新用于下一次长轮询。用户可能还想在多个浏览器窗口,多台计算机中打开相同的聊天。

我没有密切关注其中任何一个,但你不是第一个与Erlang建立网络聊天的人:

答案 1 :(得分:1)

我认为混淆来自Erlang服务器进程必须为每个客户端保持活跃的概念。它可以,但如果我没有弄错的话,Mochiweb默认不这样做。它只为每个请求生成一个新进程。如果您想拥有一个长寿命的双向客户端< - >服务器进程连接,你可以这样做,例如;

  • 为每个请求发送一个客户端标识符,并将其映射到服务器上的长期进程。该过程将维护服务器状态,您可以在其上调用方法。它仍然是拉动而不是推动。
  • 使用Web套接字实现。不确定Mochiweb是否有一个,但Misultin和Yaws等其他Erlang HTTP服务器提供了一个。对于基于Web的聊天系统,我相信网络套接字非常合适。

答案 2 :(得分:0)

对于使用websockets和Misultin的基于网络的聊天系统的非常简单示例,您可以查看此chat demo。它的目的是为了展示一个想法并且不是很优雅,但确实有效。