Python 带WebSocket的无服务器脱机-引用错误:未定义endpointUrl
我正在尝试使用Serverless offline来测试我的api,它使用支持websocket+lambdas的api网关。但是,我似乎无法让它正常工作,在使用Python 带WebSocket的无服务器脱机-引用错误:未定义endpointUrl,python,amazon-web-services,websocket,serverless,serverless-offline,Python,Amazon Web Services,Websocket,Serverless,Serverless Offline,我正在尝试使用Serverless offline来测试我的api,它使用支持websocket+lambdas的api网关。但是,我似乎无法让它正常工作,在使用SLS\u DEBUG=*进行了数小时的调试后,我陷入了操作处理程序[object object]ReferenceError中的错误[offline]错误中:未定义endpointUrl 这就是myserverless.yml的基本外观: service: my-service provider: name: aws run
SLS\u DEBUG=*
进行了数小时的调试后,我陷入了操作处理程序[object object]ReferenceError中的错误[offline]错误中:未定义endpointUrl
这就是myserverless.yml的基本外观:
service: my-service
provider:
name: aws
runtime: python3.7
stage: dev
region: eu-west-1
profile: assumed-profile
plugins:
- serverless-python-requirements
- serverless-offline
custom:
pythonRequirements:
noDeploy:
- typing
dockerizePip: true
dockerEnv:
- http_proxy
- https_proxy
package:
individually: true
functions:
websocket-connect:
handler: connect.handler
runtime: nodejs10.x
events:
- websocket:
route: $connect
websocket-disconnect:
handler: disconnect.handler
runtime: nodejs10.x
events:
- websocket:
route: $disconnect
hello-world:
handler: hello_world.handler
events:
- websocket:
route: hello-world
from websocket import create_connection
import websocket
import json
websocket.enableTrace(True)
connection_url = "ws://localhost:3001"
ws = create_connection(ground_url)
hello_world_dict = {
'action': 'hello-world'
}
ws.send(json.dumps(hello_world_dict))
ws.close()
这就是我的客户端.py的基本外观:
service: my-service
provider:
name: aws
runtime: python3.7
stage: dev
region: eu-west-1
profile: assumed-profile
plugins:
- serverless-python-requirements
- serverless-offline
custom:
pythonRequirements:
noDeploy:
- typing
dockerizePip: true
dockerEnv:
- http_proxy
- https_proxy
package:
individually: true
functions:
websocket-connect:
handler: connect.handler
runtime: nodejs10.x
events:
- websocket:
route: $connect
websocket-disconnect:
handler: disconnect.handler
runtime: nodejs10.x
events:
- websocket:
route: $disconnect
hello-world:
handler: hello_world.handler
events:
- websocket:
route: hello-world
from websocket import create_connection
import websocket
import json
websocket.enableTrace(True)
connection_url = "ws://localhost:3001"
ws = create_connection(ground_url)
hello_world_dict = {
'action': 'hello-world'
}
ws.send(json.dumps(hello_world_dict))
ws.close()
我使用sls offline start--printOutput
离线启动无服务器,并在不同的命令提示符下调用client.py。但是,当我从serverless offline提示符查看调试输出时,我看到以下错误:
[offline] Error in handler of action [object Object] ReferenceError: endpointUrl is not defined
at Object.exports.handler (C:\my-service\lambdas\nodejs\websocket_connect\index.js:24:28)
at doAction (C:\my-service\node_modules\serverless-offline\src\ApiGatewayWebSocket.js:153:20)
at Object.connect (C:\my-service\node_modules\serverless-offline\src\ApiGatewayWebSocket.js:203:15)
at WebSocketServer.wss.on (C:\my-service\node_modules\hapi-plugin-websocket\hapi-plugin-websocket.js:209:34)
at WebSocketServer.emit (events.js:198:13)
at WebSocketServer.EventEmitter.emit (domain.js:448:20)
at handleUpgrade (C:\my-service\node_modules\ws\lib\websocket-server.js:90:18)
at WebSocketServer.completeUpgrade (C:\my-service\node_modules\ws\lib\websocket-server.js:321:5)
at options.verifyClient (C:\my-service\node_modules\ws\lib\websocket-server.js:237:16)
at Object.verifyClient (C:\my-service\node_modules\hapi-plugin-websocket\hapi-plugin-websocket.js:142:21)
at WebSocketServer.handleUpgrade (C:\my-service\node_modules\ws\lib\websocket-server.js:232:22)
at Server.upgrade (C:\my-service\node_modules\ws\lib\websocket-server.js:89:16)
at Server.emit (events.js:198:13)
at Server.EventEmitter.emit (domain.js:448:20)
at onParserExecuteCommon (_http_server.js:553:14)
at onParserExecute (_http_server.js:499:3)
我想我可能需要处理serverless offline发送给我的url(
/{apiVersion}/functions/my service dev hello world/invocations
),但我不确定是什么或如何做的,特别是因为我想在AWS上对我的在线版本使用相同的代码。有人知道如何解决这个问题吗?您能发布$connect实现的处理程序吗?这方面运气好吗?哦,我相信我犯的错误是我的$connect脚本。那是很久以前的事了,但我相信它抛出了一个异常,从而丢弃了连接。