我是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');发布于 2020-08-21 15:17:51
我在部署过程中遇到了类似的问题。这里的关键是使用巧妙的REST API (https://www.ably.io/documentation/rest)来发送/发布消息,并巧妙地使用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“更改为其他名称。
当一个新的消息发布到带有"greeting“事件的通道时,上面的代码就会被触发。
https://stackoverflow.com/questions/63517917
复制相似问题