向现有php网站添加带有node.js的聊天
我有一个网站运行在apache/mysql/php共享服务器上。站点的每个页面都属于一个注册用户,该用户登录后可以编辑该页面。其他非页面所有者的用户只能查看这些页面,但不能执行任何其他操作 现在,我计划将聊天功能添加到我的应用程序中。其基本思想是,如果页面所有者在浏览器中打开页面并登录,他将显示为其他用户(匿名)的“可供聊天”。访问该页面的其他用户将能够向他发送消息,反之亦然。匿名用户不需要相互通信,他们只能与注册用户(页面所有者)通信。所以基本结构是这样的:向现有php网站添加带有node.js的聊天,php,node.js,apache,chat,Php,Node.js,Apache,Chat,我有一个网站运行在apache/mysql/php共享服务器上。站点的每个页面都属于一个注册用户,该用户登录后可以编辑该页面。其他非页面所有者的用户只能查看这些页面,但不能执行任何其他操作 现在,我计划将聊天功能添加到我的应用程序中。其基本思想是,如果页面所有者在浏览器中打开页面并登录,他将显示为其他用户(匿名)的“可供聊天”。访问该页面的其他用户将能够向他发送消息,反之亦然。匿名用户不需要相互通信,他们只能与注册用户(页面所有者)通信。所以基本结构是这样的: 匿名用户访问该页面。页面的注册所有
您是对的,PHP/Ajax调用可能会导致相当大的服务器负载,特别是当您的Apache/PHP堆栈需要大量内存来引导时。例如,PHP系统中的许多聊天模块实际上将此职责转移到专门的node.js服务器上(您提到的第二种方法),以便于扩展
另一种方法可以考虑使用PubNub这样的实时网络来帮助用户进行用户数据传输。PubNub有一个名为的工具包,它可以帮助告诉谁订阅了或取消订阅了每个频道
为了满足您的需求,我设想每个用户在登录页面时都会注册到他们正在查看的页面,方法是在JavaScript中发出以下调用:<script src="https://cdn.pubnub.com/pubnub.min.js"></script>
<script>
var pubnub = PUBNUB({
uuid : '12345-page35' //You can define this for each user
})
pubnub.subscribe({
channel : 'site-wide-chat,page35', //Subscribe to two channels!
message : receive_chat, //Callback function
presence : user_joined //Callback function
})
</script>
Presence还具有一系列漂亮的功能,例如能够让所有用户订阅当前频道:
pubnub.here_now({
channel : 'page35',
callback : function(m){console.log(m)}
});
我希望这有助于你建立你的最低可行的产品。由于一切都是在编程语言级别实现的,因此您应该能够灵活地设计一个可定制的聊天解决方案,而不会增加服务器的额外复杂性或开销。您是对的,PHP/Ajax调用可能会导致相当大的服务器负载,尤其是当Apache/PHP堆栈需要大量内存来引导时。例如,PHP系统中的许多聊天模块实际上将此职责转移到专门的node.js服务器上(您提到的第二种方法),以便于扩展
另一种方法可以考虑使用PubNub这样的实时网络来帮助用户进行用户数据传输。PubNub有一个名为的工具包,它可以帮助告诉谁订阅了或取消订阅了每个频道
为了满足您的需求,我设想每个用户在登录页面时都会注册到他们正在查看的页面,方法是在JavaScript中发出以下调用:<script src="https://cdn.pubnub.com/pubnub.min.js"></script>
<script>
var pubnub = PUBNUB({
uuid : '12345-page35' //You can define this for each user
})
pubnub.subscribe({
channel : 'site-wide-chat,page35', //Subscribe to two channels!
message : receive_chat, //Callback function
presence : user_joined //Callback function
})
</script>
Presence还具有一系列漂亮的功能,例如能够让所有用户订阅当前频道:
pubnub.here_now({
channel : 'page35',
callback : function(m){console.log(m)}
});
我希望这有助于你建立你的最低可行的产品。由于所有内容都是在编程语言级别实现的,因此在创建可定制的聊天解决方案时应该具有很大的灵活性,而不会增加服务器上的额外复杂性或开销