实现人与人之间的随机聊天

Posted

技术标签:

【中文标题】实现人与人之间的随机聊天【英文标题】:Implementing a random chat among people 【发布时间】:2011-04-20 21:59:20 【问题描述】:

我的想法是建立一个网站,人们可以在其中注册并搜索要交谈的人。他们可以选择来自特定国家、流派、特定年龄等的人。

是的,我知道有很多这样的网站,但我想实现它,因为它看起来很有挑战性。

你能告诉我如何使用 php + mysql + Jquery(Ajax) 来实现它吗?我对这些东西既不是初学者也不是高级。

那么,这应该如何工作?一个人点击搜索按钮,这个人被放入他搜索某人谈话的数据库中,那么下一步是什么?我还希望能够让人们同时与几个人交谈。

我不是要代码什么的,只是想知道如何编写代码,不需要代码。

谢谢。

【问题讨论】:

感谢我的新网站的创意!哇哈哈哈哈哈:) javascript 会扼杀你的带宽,我必须说。但是您需要考虑很多事情,请看下面我的回答。 @Drewdin:嗯,我真的不想让你失望,但是这样的网站已经很多了。 :) 无论如何,祝你好运。 废话!现在我必须窃取别人的想法! :) 祝你好运! 【参考方案1】:

我不认为像 PHP 这样的同步阻塞编程语言是适合此类应用程序的平台。选择像 JavaScript 这样的异步、非阻塞语言要明智得多。这有一个很大的优势,您可以使用Long Polling,这将改善您的应用程序中的聊天体验。

因此,我建议使用NodeJS 来实现它。您可能想查看节点中的an implementation of a simple chat。

【讨论】:

从什么时候开始 PHP 成为“阻塞”语言而“javascript”成为非阻塞语言?或者您是否暗示因为 PHP 是服务器端而 Javascript 是客户端?编辑:我现在明白了,您正在为 NodeJS 做广告 我迟到了。 +1 对于 Node.js,它只会使聊天运行顺畅且资源较少,您可以在单个 vps 上轻松处理 1000 多个并发用户,此外还有一些模块可以处理 Twitter OAuth 等,所以您甚至没有如果您不想使用数据库,您可以使用 Socket.io 之类的东西代理对话【参考方案2】:

为每个组织单位(国家、流派、年龄等)创建一个存储桶。

当一个用户连接时,为它们所属的每个存储桶赋予一个递增的更大索引。

当用户想要与存储桶中的某人建立联系时,只需在 0 和存储桶的最大索引值之间生成一个新的随机数...然后连接它们!

【讨论】:

【参考方案3】:

我相信使用 PHP+MySQL 是可以的。我建议你使用推送服务来让聊天环境变得更好。通过推送,您的客户端不必请求服务器获取新数据 + 它使聊天成为实时。一些推送服务是:PusherApp、Kwwika、Hookbox 和 BeaconPush。 他们有很好的支持、文档和库。祝你好运。

【讨论】:

【参考方案4】:

我不认为复杂的框架是此类应用程序的好解决方案。 我建议您坚持使用基本的 javascript/jquery 用于客户端.. 和 php 用于服务器端.. 您可能遇到的唯一问题是您需要一个非常强大的数据库解决方案,假设您的目标至少是一些流量,并且仅当您需要存储消息的存档时,在这种情况下我会建议Oracle(以在大型数据库方面表现出色而闻名,但它不是免费的)。 如果没有,MySQL(免费)将在相对较小的数据库的高流量上表现出色。

基本上,依赖于您的应用程序的想法很简单。您可以创建一个包含用户的表格,另一个包含消息、首选项...等。 关于客户端...只需每 3-5 秒刷新一次页面,或者让用户指定速率,并使用新消息/用户/请求等更新网页。如果有的话。 一旦用户离开,您可以从数据库中删除与他的活动相关的所有内容,这将节省一些空间..

希望你能理解我的英语, 最好的问候。

【讨论】:

【参考方案5】:

你能告诉我如何使用 PHP + MYSQL + Jquery(Ajax) 来实现它吗?我对这些东西既不是初学者也不是高级。

如果你是你所说的那样,那么我相信你不知道你打算使用的任何技术。因此,在这种情况下,我建议您先阅读一些内容,研究一些简单的示例,然后再从那里继续。例如,

从 PHP 方法文章开始 - 学习语法 创建一个简单的网页 - 创建您的第一个网站 mySql 使用方法文章 - 学习查询/语法 可能添加一个数据库mySql,实现简单的CRUD操作 了解聊天应用程序 - 工作/内部,您可以遵循的不同架构 准备一个基于客户端/服务器的小型应用程序 - 使用不同的协议

...然后当您开始对代码感到满意时,就是当您开始在代码中思考时,继续进行完整的聊天复制!

您最终可能会扭曲您最初的想法,但不要担心,这是过程的一部分。当我们更清楚地了解我们到底想要什么时,事情就会发生变化。

即使您打算使用现有的开放库/控件,您也必须知道如何使用它们;你应该掌握足够的技能,知道钉子是要敲钉子的,否则就不行。

另外,如果全心全意地完成,我认为这个端到端阶段大约需要 2 到 3 个月。

【讨论】:

【参考方案6】:

不确定 Flash 是否适合您,但 Adob​​e P2P 服务 Cirrus 绝对可以为您提供不错的后端:http://www.flashrealtime.com/simple-chat-p2p-netgroup-rtmfp/

【讨论】:

【参考方案7】:

您可以使用Orbited(以及用于浏览器的js.io)和XMPP 或IRC 作为底层系统。这两个提供了强大的聊天基础架构,可让您实现所需的任何功能,例如群聊。

【讨论】:

以上是关于实现人与人之间的随机聊天的主要内容,如果未能解决你的问题,请参考以下文章

转:拉近人与人之间的关系

人与人之间的差别

谷歌钱包是不是提供 api 来在人与人之间汇款和/或批量支付?

2020-05-21人与人之间的差距

人与人之间是如何区别的?

人与人之间的差距到底是什么