我是vercel的新手,我正在尝试部署一个由聊天功能组成的应用程序。我正在使用ably.com作为酒吧/子聊天功能。我正在尝试将实时性用于发布和订阅事件,但API中的发布事件不知何故抛出了一个错误。我检查了文档,并对其进行了正确编码。
同样的代码在localhost上运行得很好,但一旦我将其部署到vercel,它就不起作用,并引发错误。
我正在使用以下代码从API发布消息。
var realtime = new Ably.Realtime('<Ably key>');
var channel = realtime.channels.get('ham-gym-tag');
channel.publish('example', 'message data');
我在部署过程中遇到了类似的问题。这里的问题是使用ABLY REST API(https://www.ably.io/documentation/rest)发送/发布消息和ABLY实时订阅事件。这样,您甚至不需要编写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。在上面的代码中,"名称:";问候语"定义将在其上发布消息的事件名称。现在,您可以在要订阅事件"的文件中编写以下代码;问候语";
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。此外,请将偶数名称从"更改为";问候语"如果你愿意的话,可以去别的地方。
每当一个新消息被发布到带有事件"的频道时,上述代码就会被激发;"问候";。