Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这是WebSocket和JWT的有效设置吗_Php_Node.js_Websocket - Fatal编程技术网

Php 这是WebSocket和JWT的有效设置吗

Php 这是WebSocket和JWT的有效设置吗,php,node.js,websocket,Php,Node.js,Websocket,我正在尝试创建一个用于设置简单推送通知系统的编程练习。我不确定我是否做对了,老实说,除了感觉不对之外,我也说不出为什么。从纸面上看,它应该是这样工作的: 客户端从web服务器请求带有标志的页面以获取令牌。如果数据库中存在令牌,并且没有使用expired at时间戳过期,则返回该令牌,否则将生成一个新令牌。使用PHP的openssl_random_pseudo_bytes方法生成它们 将响应返回到客户端后,请检查是否存在websocket,如果存在,请将其关闭。用令牌打开一个新的 将来发生某些事件

我正在尝试创建一个用于设置简单推送通知系统的编程练习。我不确定我是否做对了,老实说,除了感觉不对之外,我也说不出为什么。从纸面上看,它应该是这样工作的:

客户端从web服务器请求带有标志的页面以获取令牌。如果数据库中存在令牌,并且没有使用expired at时间戳过期,则返回该令牌,否则将生成一个新令牌。使用PHP的openssl_random_pseudo_bytes方法生成它们

将响应返回到客户端后,请检查是否存在websocket,如果存在,请将其关闭。用令牌打开一个新的

将来发生某些事件时,将从web服务器向websocket服务器发送post请求,其中包含作为目标用户的令牌和消息

如果websocket服务器具有与该用户的令牌匹配的活动连接,则发送该消息,如果没有,则放弃该消息。通知web服务器是否成功。如果失败,web服务器将创建一个通知,以便在用户下次登录时获得消息


对于简单的事情,这就足够了吗?我有没有遗漏什么,有没有潜在的问题?正如我所说,这将是一个练习,但如果有人试图在生产环境中实现这一点,他们需要考虑什么安全性?

WebSooCts没有POST请求的概念。因此,您需要找到其他方法将消息从web服务器发送到WebSocket服务器。如果服务器在同一台机器上,您可以尝试其他进程间通信技术,如信号、共享内存、管道、套接字、流等,但这将使这个问题被归为过于宽泛的类别。另外,一般建议:不要将PHP与Node.js混合使用。它很快就会变得难看,并留下一种代码气味,使臭鼬可以作为立方体来掩盖这种气味。它们不会驻留在同一台服务器上,如果websocket服务器是一台ExpressJS,使用Socket.io作为Socket.io自己的教程,我就可以从web服务器访问websocket服务器。为什么将它们用于特定目的是不好的?一台服务器只处理从数据库提供的内容,另一台服务器只担心将通知推送到客户端。关注点是分开的。