后台给的访问地址类似 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 是不可以的,不知道如何设置
这个要看日志了,不可以的原因可能是被墙了,也可能是代码问题,也可能是配置的问题。 用 ws 试试,不用wss
此答案来自钉钉群“阿里函数计算官网客户"
阿里云函数的访问地址是基于HTTP协议的,无法直接访问WebSocket协议的服务。你可以尝试使用第三方的WSS代理服务,将WebSocket请求转发到阿里云函数的HTTP触发器上,实现WebSocket代理。
具体的实现方法如下:
在阿里云函数中创建HTTP触发器,并记录下HTTP触发器的访问地址,例如:https://ai.us-east-1.fcapp.run。
使用第三方WSS代理服务,将WebSocket请求转发到HTTP触发器的访问地址上。例如,你可以使用nginx等代理服务器来实现WebSocket代理。
在阿里云函数中,使用http-proxy-middleware等模块来实现HTTP代理,将HTTP请求转发到目标服务上。具体的代码实现可以参考你提供的代码。
需要注意的是,在使用第三方WSS代理服务时,需要设置代理服务器的转发规则,将WebSocket请求转发到阿里云函数的HTTP触发器上。同时,阿里云函数的HTTP触发器也需要支持WebSocket协议的连接。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。