首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二郎网络发行

二郎网络发行
EN

Stack Overflow用户
提问于 2011-07-16 17:30:52
回答 3查看 1.5K关注 0票数 1

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

先期

EN

回答 3

Stack Overflow用户

发布于 2011-07-19 20:34:44

事实上,您正在使用的web服务器不应该改变您的模型太多。你还在搭讪呢。您也不想让您的聊天与管理HTTP连接的进程绑定得太深。HTTP连接是短暂的,即使一切都进行得很好,而且您使用的是长轮询,也不能保证在下一次长轮询中重新使用该连接并保持活动。用户还可能希望在多个浏览器窗口、多台计算机中打开相同的聊天。

我没有仔细看过这些,但你不是第一个和Erlang建立网络聊天的人:

  • http://chrismoos.com/2009/09/28/building-an-erlang-chat-server-with-comet-part-1/
  • http://www.erlang-factory.com/upload/presentations/31/EugeneLetuchy-ErlangatFacebook.pdf
  • http://yoan.dosimple.ch/blog/2008/05/15/
  • https://github.com/yrashk/socket.io-erlang (更多的是用于这类事情的通用工具,而不是专门聊天)
  • 演示 (如上文所示)
票数 4
EN

Stack Overflow用户

发布于 2011-07-16 20:08:40

我认为这种混淆来自于一个概念,即Erlang服务器进程必须对每个单独的客户端保持生存。可以,但如果我没有弄错的话,Mochiweb默认不会这么做。它只会为每个请求生成一个新的进程。如果您希望有一个长时间的双向客户端<->服务器进程连接,您可以这样做,例如;

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

Stack Overflow用户

发布于 2011-07-17 01:18:35

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6719051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档