Tag: 聊天

与Node.js,Websocket – Socket.IO和Redis进行简单聊天的多个实例

我正在尝试用Node.JS和使用Socket.IO的Websocket创build一个简单的聊天应用程序。 我通过这个德语教程启发了我自己,并为单个后端实例运行良好。 我想在后端有2个服务器实例,它们应该在彼此之间同步聊天消息,并将聊天logging存储在redis中。 当新的聊天室join时,客户端应该显示当前频道的最后10条消息。 我试图从这个stackoverflow页面应用解决scheme,但我得到一些问题。 首先我得到 连接到'ws:// localhost:8080 / socket.io /?EIO = 3&transport = websocket&sid = LEqGvY0CVk9YaSzBAAAA'的WebSocket连接失败:连接在收到握手响应之前closures 在控制台中的错误。 其次,两个客户端都在1秒内收到“有效载荷”消息。 我可能不明白如何重新同步机制的作品,我也不知道如何显示聊天logging。 这是我的代码到目前为止: var conf = require('./config.json'); var cluster = require('cluster'); var os = require('os'); if (cluster.isMaster) { // we create a HTTP server, but we do not use listen // that way, we have a socket.io […]

即使在重新加载页面期间如何使DOM元素可见?

我想在底部执行一些固定的div,如果用户在我的网站上,不用重新加载它们。 这就像Facebook聊天,用户可以遍布网站,但聊天是可见的? 这个问题是因为我创build了与NodeJS的聊天,当页面刷新时,连接被销毁并重新创build,所以我想在这个页面重新加载的时候使这个连接持久化。 我知道可能的解决scheme,使每个请求Ajax调用,但是…这是无法使用….

在node.js中的TCP聊天服务器架构…将数据库或内存中的套接字保存?

我正在计划在node.js + mongo数据库的TCP聊天服务器..这是我正在考虑的架构 – 在mongo数据库中创build一个集合“online_users”这个集合将拥有所有的在线用户,一旦用户下线,我将从这个集合中删除这些用户。 创build一个集合“房间”..在这个集合我打算存储房间名称(包括在房间里的用户名csv)和参与者在这个房间.. 用于存储用户的聊天历史的历史集合。 现在我正在考虑在“房间”集合中的数据库存储套接字连接,但我不知道如果我应该这样做,或在arrays中存储套接字连接? 这里是我正在思考的数据库的stream程 – 如果用户A开始与B和C聊天,那么我将创build一个新的房间“A,B,C”。 我将发送这个房间名称给客户端,聊天客户端在发送新的聊天消息时必须通过这个房间名称。 当用户在聊天中发送消息时,我将检查他们在哪个房间,并从数据库获取每个人的套接字连接,并将该消息广播给B和C. 请注意,我是node.js和聊天服务器的新手,所以我对这个体系结构有任何build议。 另外,如果你有TCP聊天服务器架构/聊天服务器数据库架构的任何链接..那么请分享您的意见/答案。 任何帮助,我非常感谢! 更新1:另外我不知道如果我可以在数据库中存储套接字对象:( ..序列化可能工作吗?让我知道这个想法。

REST API聊天 – 用于实时获取消息的端点

我有一个由express + mongodb支持的REST API服务器。 有几个端点具有不同的资源。 其中之一是聊天API。 我已经有了几个基本的端点: POST http://api.example.com/v1/chat – 创build聊天 POST http://api.example.com/v1/chat/:id/message – 发送消息到现有的聊天 GET http://api.example.com/v1/chat/:id/messages – 在指定的聊天中获取消息 但是我需要为API消费者提供一种方式, 在不重新加载页面的情况下实时有效地获取新消息。 就目前而言,您可能只是从客户端轮询GET端点,但似乎不是高性能的。 例如,客户端可以具有将在头部显示新消息的UI(某种通知)的UI 。 我正在考虑websockets。 是否有可能例如提供像/chat/:id/subscribe这样的端点来代理套接字的服务器并在客户端连接到它? 有没有这样的APIdevise的一些很好的例子,我可以从中得到灵感,或者你可以给我一个build议? 谢谢!

Socket.io将数组传递给客户端

我试图将一个名为“用户名”的数组传递给客户端。 以下是服务器端的代码: var usernames = {}; var numUsers = 0; socket.on('online users', function () { io.emit('connected_users', { name: usernames, total: numUsers }); }); 这是客户站点: var online=[] var onlineNum=0; function headcount(){ socket.emit('online users'); } socket.on('connected_users', function (data){ onlineNum=data.total; for(i=0; i<onlineNum; i++){ online[i]=data.name[i]; alert(data.name[i]);} }); 警报只是“未定义”。 我究竟做错了什么?

在由Node.js支持的Web应用程序中集成聊天function

我正在开发与Angular(客户端)和节点(服务器端)的Web应用程序。 我想集成一些社交function,包括聊天。 因此,用户可以发现附近的用户并向他们发送消息。 我想知道实现这个最好的方法。 我有一个想法,但在我看来,这是非常原始的,恐怕它可能会超载服务器。 我的想法是从客户端发送每一分钟,向服务器发送关于新消息的请求 服务器将在该用户的所有对话中查找新消息,检查每个对话的最后消息时间 服务器用新消息发回对话 如果客户端收到带有新消息的会话,则会显示通知,用户可以打开聊天。 一旦聊天被打开,向服务器发送新消息的请求每3秒发送一次(而不是1分钟) 存储在MongoDB中的用户对话示例 {'conversations': [ {'to':{'user-id':'101010', 'name':'Michela', 'location':'Alba Adriatica', 'img':'http://graph.facebook.com…jpg' }, 'last-msg':12345, //epoch 'msgs':[ {'from-me':'ciao come stai?', 'date':''}, {'from-you':'bene grazie, tu?', 'date':''}, {'from-me':'eh insomma..mi so rott lu cazz', 'date':''}, {'from-you':'dai poi vai alle Hawaii', 'date':''} ] }, … ] }

节点js在php网站上聊天

是否有可能创build一个聊天function的php网站,聊天function写在节点js? 它只是我读过的所有教程,索引页由节点js服务。 我不希望节点做到这一点。 我想要xpppp来做到这一点。 我只需要从浏览器交换聊天到服务器。 可能吗。 如果是的话,怎么样? 请帮帮我。 我被困了一个星期了。 我已经问过类似的问题,我没有得到有用的答案。 提前致谢。

如何仅使用Net模块(不是socket.io)将消息发送到node.js中的单个客户端

简单的代码: process.stdin.resume() process.stdin.setEncoding('utf8'); var server = createServer(); server.listen(9999); server.on('connection',function(sock){ console.log('CONNECTED:'+sock.remoteAddress+":"+sock.remotePort); process.stdin.on('data',function(send){ sock.write(send); }); } 当从10.10.10.1和10.10.10.2接收到连接时,在terminal上显示“CONNECTED:10.10.10.1:xxx”和“CONNECTED:10.10.10.2:xxx” 发送消息给客户端,我用sock.write(发送)..但是,所有的客户端收到消息 我如何发送消息给特定的客户端。 从谷歌search有很多socket.io相关的文件(解决scheme)..但是,在使用socket.io之前,我想知道node.js本身。 (或JavaScript本身?) 在阅读Vadim的评论之后,我在下面写下了更多的代码。 完整的工作代码。 我添加两件事。 根据Vadim的评论,添加属性sock.id和使用属性sock.remoteAddress,发送服务器的stdin消息 10.10.10.1客户端 var net = require('net') process.stdin.resume() process.stdin.setEncoding('utf8'); var server = net.createServer(); server.listen(9999); server.on('connection',function(sock){ sock.write('input your ID: ',function(){ var setsockid = function(data){ id=data.toString().replace('\r\n',''); console.log('ID:'+id+' added!!') sock.id=id sock.removeListener('data',setsockid); }; sock.on('data',setsockid); sock.on('data',function(data){ d=data.toString().replace('\r\n',''); console.log(sock.id+' say: […]

Facebook像mongodb中的聊天数据库模式

我正在计划node.js中的TCP / IP聊天服务器,我想包括Facebook / Gmail聊天的几乎所有function。 我有两个想法在数据库模式 – 第一 – 1)当user1开始与user2和user3聊天时,我将检查这些用户以前聊过的数据库(是否有为这些用户创build的空间?),如果不是,那么我将为这些用户创build一个空间。 2)我将保存消息收集聊天消息和每个聊天消息在一个单独的文件,我想保存这些相关的聊天消息味精msg sender_user房间时间戳附件 问题与这种方法 – 1)我检查的方式,如果user1,user2和user3之前聊过(是否有任何房间创build这些之前)所需的“$所有”在查询,这是缓慢的,并没有太多的可扩展性(请参阅我以前的问题 – 数组searchmongodb )。 这个search有没有更好的方法? 第二 – 1)当user1开始与user2和user3聊天时,我将为这个聊天创build一个集合(一个房间的软件),在这个集合中,我将把聊天消息保存在文档中 问题与这种方法 – 1)我应该如何决定收集名称? 我应该把它命名为“user1,user2,user3”吗? 2)我将如何检查由于“user1,user2,user3”与“user2,user3,user1”不同而为user2,user3,user 1创build的collections(房间)? 我也在寻找更多的想法,因为我不完全满意我的方法。 为了获得最大的性能和可扩展性,大型巨头(Facebook,Gmail)如何执行其数据库架构? 任何帮助,我非常感谢。

nodejs – net或http模块

我正在与nodejs聊天系统。 要创build节点服务器,我可以使用net或http模块。 那么使用它们的区别和好处是什么呢?