websocket是一个永久性的开放连接。连接到WebSocket时,您只需要验证一次。
只需将您的登录cookie发送给node.js一次,并通过引用套接字连接将其存储在服务器上。然后只处理来自已认证用户的消息,并仅向经过认证的用户进行广播。
问题是客户端用户可以很容易地伪造这个cookie,因为节点不会与php通话以确保它是有效的登录cookie。
使用now的示例。
警告虚拟代码
// server.js
everyone.now.joinChat = function(cookie) {
chat.add(this, cookie);
}
everyone.now.serverMessage = function(message) {
if (chat.hasUser(this)) {
chat.broadcast(message);
}
}
chat = (function() {
var users = [];
return {
"add": function(client) {
users.push(client);
},
"hasUser": function(client) {
return users.some(function(user) {
return user === client;
});
},
"broadcast": function(message) {
users.each(function(user) {
user.clientMessage(message);
});
}
}
}());
// client.js
$(function() {
now.joinChat($.cookie("login"));
$("#send").click(function() {
now.serverMessage($(this).data("message"));
});
now.clientMessage = function(message) {
$("#messages").append($("<span></span>").text(message));
}
});
的可能重复[Node.js的如何创建和读取Express会话(HTTP答案:// stackoverflow.com/questions/5765777/node-js-how-to-create-and-read-session-with-express) – jmort253 2012-03-05 06:28:58