我正在使用nextjs在web应用程序中实现push。它在我的开发环境中按预期工作。但是当我将它部署到vercel时,它不能正常工作。我只能在浏览器中刷新页面才能看到结果。
这是客户端的实现:
useEffect(() => {
const pusher = new Pusher(`${process.env.PUSHER_KEY}`, {
cluster: `${process.env.PUSHER_CLUSTER}`,
useTLS: true
});
const channel = pusher.subscribe('franks-auto-spa');
channel.bind('cancel-wash', data => {
console.log(data.date);
removeWash(data.date);
});
}, []);
这是API的实现:
export default async (req, res) => {
const connection = await mysql.createConnection(process.env.DATABASE_URL);
console.log(req.body.date);
const result = await connection.query('DELETE FROM ongoing WHERE date = ?', [req.body.date]);
console.log(result);
const pusher = new Pusher({
appId: `${process.env.PUSHER_ID}`,
key: `${process.env.PUSHER_KEY}`,
secret: `${process.env.PUSHER_SECRET}`,
cluster: `${process.env.PUSHER_CLUSTER}`,
useTLS: true
});
pusher.trigger('franks-auto-spa', 'cancel-wash', req.body);
res.json({message: 'Wash deleted deleted...'});
}
我在Vercel中缺少任何配置吗?
我也有过这样的问题,一两次;Vercel过了一会儿就超时了。(《业余爱好》节目10秒)所以使用Vercel数据库可能行不通。你试过改用Pro套餐吗?或者你可以切换到Heroku,它不仅有更长的超时时间(30秒),而且还支持websockets。
很抱歉回复晚了。我也是刚知道的。只需添加await以防止无服务器功能被关闭!
pusher.trigger('franks-auto-spa', 'cancel-wash', req.body);
await pusher.trigger('franks-auto-spa', 'cancel-wash', req.body);