2011-04-11 81 views
5

最近我一直在阅读这么多的回合节点,聊天功能似乎非常好。但是,我见过的聊天示例基本上只是将聊天服务器广播到固定的URL(如会议室)。是否有可能使用节点js来创建更像gchat的聊天客户端? - 在当前页面上弹出一个聊天窗口,然后在多个页面中保留。有没有人看过这个例子呢?节点js - 创建持久的私人聊天室

如果没有,建议其他技术用于此目的(我知道这在其他问题已得到解答)?

谢谢。

+0

这不应该太难写。你到底在找什么? – Raynos 2011-04-11 13:21:32

+0

我有兴趣编写一个客户端以整合到我的网站中。用户将能够看到他们的“伙伴”,并且与gchat有相似的感觉,如果他们愿意,可以坚持跨所有页面。我想我只是想知道是否可以向特定用户(不同于聊天室)播放多个私人聊天会话,并在用户关闭之前坚持这一点。我知道还有其他语言可以编写它,但如果可能的话,节点似乎很酷。感谢您的评论。 – smpappas 2011-04-11 15:13:33

+0

通过“gchat”你的意思是谷歌聊天或别的什么? – yojimbo87 2011-04-11 15:28:35

回答

6

我会给你一个伪依赖于jquerynow的实现来从解决方案中抽象出单调乏味的IO和繁琐的DOM操作。

// Server 

var nowjs = require('now'); 
var everyone = nowjs.initialize(httpServer); 

everyone.now.joinRoom = function(room) { 
    nowjs.getGroup(room).addUser(this.user.clientId); 
} 

everyone.now.leaveRoom = function(room) { 
    nowjs.getGroup(room).removeUser(this.user.clientId); 
} 

everyone.now.messageRoom = function(room, message) { 
    nowjs.getGroup(room).now.message(message); 
} 

// Client 

var currRoom = ""; 

$(".join").click(function() { 
    currRoom = ... 
    now.joinRoom(currRoom); 
}); 

$(".send").click(function() { 
    var input = ... 
    now.messageRoom(currRoom, input.text()); 
}); 

now.messageRoom = function(message) { 
    $("messages").append($("<div></div>").text(message)); 
}; 

我只是注意到自己新版本的nowjs(0.5)有组建系统。这基本上做你想为你做的。没有麻烦。

如果你想要的话,你可以删除nowjs依赖项,并用100/200行代码替换它。我将把它作为用户的练习。

+0

谢谢雷诺斯。我只是看着nowjs,它可能就是我正在寻找的东西。我会对它进行一次刺探,我相信我应该能够根据私人聊天或小组会议的需求生成小组,并在完成时删除用户和小组。 – smpappas 2011-04-11 17:34:11

+0

@smpappas差不多。在抽象实时IO方面使用'now'非常有用。你必须小心,尽管你不会过度,但是你会牺牲效率。 – Raynos 2011-04-11 17:50:32

1

看看AjaxIM:https://github.com/freq32/AjaxIM

这是基于一个的NodeJS实式的聊天应用(可以考虑好友列表,在屏幕底部的小持久聊天栏,弹出的聊天记录)。