Php 如何将通知推送到在线web应用程序用户?
我正在进行一个大学项目,在那里我必须进行一次聊天,聊天中包含邀请选项,只有注册用户之间才能接受/拒绝邀请。如果接受邀请,则打开聊天室,否则向发件人发送消息 除了这个邀请选项,我已经完成了整个项目。我知道我可以使用Php 如何将通知推送到在线web应用程序用户?,php,jquery,html,ajax,chat,Php,Jquery,Html,Ajax,Chat,我正在进行一个大学项目,在那里我必须进行一次聊天,聊天中包含邀请选项,只有注册用户之间才能接受/拒绝邀请。如果接受邀请,则打开聊天室,否则向发件人发送消息 除了这个邀请选项,我已经完成了整个项目。我知道我可以使用COOKIE(使用setInterval),但我需要更安全的方法来实现这一点 在我当前的PHPinvite函数中,(例如:邀请发件人:a@a.com,邀请:b@b.com)我曾经验证过b@b.comuser(已注册或未注册),并通过验证发回JSON。如果用户已注册,则仅在自助端打开聊天室
COOKIE
(使用setInterval
),但我需要更安全的方法来实现这一点
在我当前的PHPinvite
函数中,(例如:邀请发件人:a@a.com,邀请:b@b.com
)我曾经验证过b@b.com
user(已注册或未注册),并通过验证发回JSON。如果用户已注册,则仅在自助端打开聊天室(a@a.com
)并可以向b@b.com
。b@b.com
用户只有在打开带有邀请的聊天框时才会收到这些消息发件人:b@b.com,适用于:a@a.com
我不知道如何将邀请直接发送到b@b.com
带有选项,并将单击的事件(接受/拒绝
)返回到`a@a.com.
目前,我脑子里只有一个想法:cookie
withsetInterval
。但这种想法有一个缺点,即两个用户页面都在不断地检查cookie,这意味着在带宽上有更多的负载,在用户端有更多的进程,最重要的是,这是不安全的。
我已经在我的项目中加入了用户3setInterval
功能:状态检查、新的msgs检查和聊天选项
那么,有谁能提出更好的方法吗?这是一个相当广泛的问题,但我将尝试提供一些基本的设计指导。我希望用户输入他们的电子邮件地址和其他人的电子邮件地址,然后单击“登录”按钮 接下来会发生什么取决于您的设计,但这就是我要做的。这涉及到AJAX操作,这一点很好
session\u start
。还将创建对话表中的一行上次看到的时间戳
conversation.accepted\u by\u user\u id
为空,则对话正在等待第二个用户接受聊天请求。如果填充了位于的message.received\u,但位于
的message.sent\u为空,则表示下次发送更新请求时需要将消息发送给第二个用户
user (
id (pk) int,
email varchar, // user's email address
email_to varchar, // the email address of who they wish to chat to
session_id varchar,
last_seen_at timestamp
)
conversation (
id (pk) int,
started_by_user_id int, // foreign key
accepted_by_user_id int, // foreign key (null if not yet accepted)
from_notified_at timestamp,
to_notified_at timestamp // timestamp (null if not yet accepted)
)
message (
id (pk),
conversation_id int, // foreign key
is_forward boolean, // true = a->b, false = b->a
message_text varchar, // actual text of message
received_at timestamp, // when it was sent in a server message
sent_at timestamp // when it was picked up in a server message
)
你担心饼干的安全性。如果使用会话cookies,则意味着只有启动会话的用户才能使用PHP提供给它的会话ID(有几个例外:恶意第三方通过脚本注入窃取cookie或通过窃听捕获数据。如果您担心这些事情,您可以使用SSL并在XSS上阅读,但我认为这超出了大学课程的范围)
长话短说,你选择了一个不平凡的项目!祝你好运,如果有什么你不明白的,把它分解成更小的部分,直到每个部分都是编程问题
现在,你可以用sockets来做这个项目,但是你应该在开始跑步之前学会走路。我建议你先用这种方法试试(因为它更容易,但仍然足够难)如果你能做到这一点,请转到套接字。可以发布
js
,php
?对于一个大学项目,我认为启动AJAX操作的setInterval
就足够了。你可以查看套接字,但据我所知,这需要一种特殊的长轮询服务器。没有什么内在的使用setInterval
和AJAX治愈-你能在这里扩展你担心的吗?没有任何代码,我肯定我们做不了多少。@halfer:我担心cookies
。Bcz我使用HTML作为前端和PHP后端,所以任何人都可以轻松检查cookie数据。还有一个原因是setInterval会给带宽和用户端进程带来不必要的负担。因此,我需要一个更聪明的主意,可以直接向另一个终端用户发送消息,然后回复。“Is套接字适用于此推送通知。”