2011-04-11 77 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實式的聊天應用(可以考慮好友列表,在屏幕底部的小持久聊天欄,彈出的聊天記錄)。