我在部署过程中遇到了类似的问题。这里的问题是使用 ABLY REST API ( https://www.ably.io/documentation/rest ) 发送/发布消息并使用 ABLY Realtime 订阅事件。这样,您甚至不需要编写 API。您可以通过 Axios 或类似的 npm 包直接调用 Ably REST API。
调用以下方法将消息发送/发布给 ABLY
const onSave = async () => {
let data = { name: "greeting", data: msg };
const res = await axios({
method: "POST",
headers: {
Authorization:
"Basic " + new Buffer(process.env.ABLY_CLIENT_ID).toString("base64"),
"Content-Type": "application/json",
},
url: "https://rest.ably.io/channels/<channel name>/messages",
data: data,
});
};
请注意,您必须将 替换为您的频道名称,并将 ABLY_CLIENT_ID 替换为您的 ABLY 客户 ID。在上面的代码中,'name: "Greeting"' 定义了您将发布消息的事件名称。现在您可以在要订阅“greeting”事件的文件中编写以下代码
useEffect(() => {
var ably = new Ably.Realtime(process.env.ABLY_CLIENT_ID);
const channelAbly = ably.channels.get(<channl name>);
channelAbly.subscribe("greeting", function (message) {
// console.log("message received for event " + message.name);
// console.log("message data:" + message.data);
});
}, []);
请注意,您必须将 替换为您的频道名称,并将 ABLY_CLIENT_ID 替换为您的 ABLY 客户 ID。如果您愿意,也请将偶数名称从“问候”更改为其他名称。
每当一条带有“greeting”事件的新消息发布到频道时,就会触发上述代码。