gpt4 book ai didi

javascript - redis php 和 javascript 连接

转载 作者:可可西里 更新时间:2023-11-01 11:37:08 24 4
gpt4 key购买 nike

我正在制作一个网络聊天客户端,我在其中使用 Redis 进行发布/订阅。我在订阅部分遇到问题。我可以发布,但不确定如何订阅。我有一个用于订阅的 php 脚本(当我运行 php 时它可以工作)它会监听并回显消息。我希望能够在 javascript 中获取该消息。如何调用php文件并监听?我在 jquery 中尝试了 ajax 并在成功函数中监听了 echo ,但它似乎不起作用。我对此很陌生,任何建议都有帮助

编辑:这是javascript

$.ajax({
url:"http://localhost/redisphp.php",
type: GET,
success: function(response){ ...},
...

这是redis。我仿照此链接 https://xmeng.wordpress.com/2011/11/14/pubsub-in-redis-using-php/

<?php
function f($redis, $chan, $msg) {
switch($chan) {
case 'chan-1':
echo $msg;
}
}

ini_set('default_socket_timeout', -1);

$redis = new Redis();
$redis->pconnect('128.0.0.0',6378);

$redis->subscribe(array('chan-1'), 'f');
print "\n";

?>

最佳答案

我编写了一个用于订阅的 php 脚本(它在我运行 php 时起作用)它会监听并回显消息。我希望能够在 javascript 中获取该消息。

听起来您需要创建一个连接到您的 Redis 服务器的 Express API。

请记住,我将继续使用您提供的非常有限的信息。因此,使用 Express API 的第一件事就是像这样创建 package.json 文件:

{
"dependencies": {
"express": "4.16.3",
"redis": "2.8.0",
"nodemon": "1.18.3"
},
"scripts": {
"dev": "nodemon",
"start": "node index.js"
}
}

当然,您不希望它看起来完全像这样,而只是将您指向您想要做的事情。当然,您需要为那些特定的依赖项执行 npm install

然后,如果我是你,我会像这样创建一个 server/keys.js 文件:

module.exports = {
redisHost: process.env.REDIS_HOST,
redisPort: process.env.REDIS_PORT,
};

然后要求在 server/index.js 文件中添加以下内容:

const keys = require("./keys");

// Express App Setup
const express = require("express");

const app = express();

// Redis Client Setup
const redis = require(‘redis’);
const redisClient = redis.createClient({
host: keys.redisHost,
port: keys.redisPort,
retry_strategy: () => 1000
});
const redisPublisher = redisClient.duplicate();

所以这个 retry_strategy 接受一个箭头函数,它表示如果我们失去与 redis 服务器的连接,尝试每秒重新连接一次。

retry_strategy 的键由下划线分隔,这与 JavaScript 标准的 camelCase 不同。

根据 Javascript 库的 Redis 文档,如果我们有一个客户端在 Redis 上监听或发布信息,我们必须在将连接转换为将要监听、订阅或发布信息的连接之间建立重复连接发布信息,不得用于其他目的。

这就是为什么我在 redisClient 的末尾做这个 duplicate() 的原因。

差不多就是这样了。

关于javascript - redis php 和 javascript 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31418899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com