首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vercel巧妙设置

Vercel巧妙设置
EN

Stack Overflow用户
提问于 2020-08-21 14:55:20
回答 1查看 150关注 0票数 2

我是vercel的新手,我正在尝试部署一个包含聊天功能的应用程序。我正在使用ably.com作为发布/订阅聊天功能。我试图使用巧妙的实时来发布和订阅事件,但不知何故API中的发布事件抛出了一个错误。我检查了文档,并且编码正确。

同样的代码在localhost上工作得很好,但是一旦我把它部署到vercel,它就不能工作并抛出错误。

我使用以下代码从API发布消息。

代码语言:javascript
复制
var realtime = new Ably.Realtime('<Ably key>');
var channel = realtime.channels.get('ham-gym-tag');
channel.publish('example', 'message data');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-21 15:17:51

我在部署过程中遇到了类似的问题。这里的关键是使用巧妙的REST API (https://www.ably.io/documentation/rest)来发送/发布消息,并巧妙地使用Realtime来订阅事件。这样,您甚至不需要编写API。您可以通过Axios或类似的npm包直接调用Ably REST API。

调用下面的方法,将消息发送/发布到ABLY

代码语言:javascript
复制
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“的文件中编写以下代码。

代码语言:javascript
复制
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“事件的通道时,上面的代码就会被触发。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63517917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档