使用Sails.js进行个性化聊天
有没有办法在sails.js或教程中帮助我建立一个对等聊天,使用套接字,比如pubnub。
我正在尝试使用sails.js实现个性化聊天function。这意味着我在我的应用程序中说了多个用户,用户可以与其他用户聊天。 因此,如果用户A在用户B聊天框中发送消息,则B(仅)接收,反之亦然。
我已经浏览了http://sailsjs.org/#!documentation/sockets ,它的文档提供了使用模型的示例。 所以我想这不是一对一的聊天,而是像用户列表和用户配置文件这样的东西改变了一些东西。
所以我知道我需要使用本机socket.io代码。 我需要的是客户端可以为特定通道打开一个套接字,然后每当用户A键入用户B时,该消息就存储在数据库中,并写在套接字上。 我不知道如何在Sails中获得此function。
我可以在MessagesController的index事件中编写代码。 因此,我需要根据用户A和用户B的详细信息计算通道名称,并将其写入该通道的套接字。 但我不知道如何将它写入该特定通道的套接字。 我希望我能清楚自己想要什么。 我发现这段代码是一个例子:
//Code For Server var io = require("socket.io"); io.sockets.on("connection", function (sock) { sock.emit("welcomeMessage", { hello: "world" }); } io.listen(80); //Code For Client var sock = io.connect('http://localhost'); sock.on('welcomeMessage', function (json) { //Handle Event Received });
但它没有告诉我,如何从我想要的任何控制器中为通道“welcomeMessage”写入此特定套接字。 像PubNub支持的东西( http://www.pubnub.com/ )。
你绝对可以使用基于模型的pubsub方法在Sails中进行点对点和群聊。 在Sails v0.10( npm install sails@beta
sails npm install sails@beta
)中它更容易,并且在http://github.com/balderdashy/sailsChat上有一个完整的例子。 Docs for Sails v0.10就在这里 。
使用v0.10的技巧是使用订阅上下文和消息事件的组合,以便只有用户自己订阅他们自己的message
上下文,但是他们订阅了他们在聊天室中的每个人的update
上下文。 。 这样他们只能获得自己的直接消息,但他们会听到他们朋友的更新(即名称和状态更改)。
要将直接消息发送到控制器中的User
实例:
User.message(userInstance, msgData);
订阅该实例的message
上下文的任何套接字客户端将接收具有以下数据对象的user
事件:
{ id: [the user ID], verb: "messaged", data: [the data in msgData] }
如果你愿意,你也可以使用低级Sails Socket方法,如join
, leave
, broadcast
和emit
来构建一个更加临时的聊天服务器,但是以Sails方式实现它可以让你利用框架的强大function!