开发者社区 > 云原生 > Serverless > 正文

后台给的访问地址类似 https://ai.us-east-1.fcapp.run。

提问54.png

后台给的访问地址类似 https://ai.us-east-1.fcapp.run。我的代码类似如下const express = require('express') const { createProxyMiddleware } = require('http-proxy-middleware')const app = express() const port = 9000const wss = createProxyMiddleware({ target: 'wss://abc.com', changeOrigin: true,// needed for virtual hosted sites ws: true, // proxy websockets onProxyReq: (proxyReq, req, socket, options) => { proxyReq.headers['Sec-WebSocket-Key'] = req.headers['Sec-WebSocket-Key']; proxyReq.headers['Sec-WebSocket-Version'] = req.headers['Sec-WebSocket-Version']; }, onProxyRes: (proxyRes, req, socket, options) => { proxyRes.headers['Access-Control-Allow-Origin'] = '*'; } });我现在用 https://ai.us-east-1.fcapp.run 来访问wss://abc.com 是不可以的,不知道如何设置

展开
收起
云原生那些事 2023-06-25 16:35:19 110 0
2 条回答
写回答
取消 提交回答
  • 这个要看日志了,不可以的原因可能是被墙了,也可能是代码问题,也可能是配置的问题。 用 ws 试试,不用wss

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-06-25 23:15:21
    赞同 展开评论 打赏
  • 阿里云函数的访问地址是基于HTTP协议的,无法直接访问WebSocket协议的服务。你可以尝试使用第三方的WSS代理服务,将WebSocket请求转发到阿里云函数的HTTP触发器上,实现WebSocket代理。

    具体的实现方法如下:

    1. 在阿里云函数中创建HTTP触发器,并记录下HTTP触发器的访问地址,例如:https://ai.us-east-1.fcapp.run。

    2. 使用第三方WSS代理服务,将WebSocket请求转发到HTTP触发器的访问地址上。例如,你可以使用nginx等代理服务器来实现WebSocket代理。

    3. 在阿里云函数中,使用http-proxy-middleware等模块来实现HTTP代理,将HTTP请求转发到目标服务上。具体的代码实现可以参考你提供的代码。

    需要注意的是,在使用第三方WSS代理服务时,需要设置代理服务器的转发规则,将WebSocket请求转发到阿里云函数的HTTP触发器上。同时,阿里云函数的HTTP触发器也需要支持WebSocket协议的连接。

    2023-06-25 16:50:31
    赞同 展开评论 打赏
问答分类:
问答地址:

快速交付实现商业价值。

相关电子书

更多
Lindorm AI 能力介绍 立即下载
2023云栖大会:PolarDB for AI 立即下载
2023云栖大会:Lindorm一站式AI数据平台实战 立即下载