Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带WebSocket的无服务器脱机-引用错误:未定义endpointUrl_Python_Amazon Web Services_Websocket_Serverless_Serverless Offline - Fatal编程技术网

Python 带WebSocket的无服务器脱机-引用错误:未定义endpointUrl

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

我正在尝试使用Serverless offline来测试我的api,它使用支持websocket+lambdas的api网关。但是,我似乎无法让它正常工作,在使用
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脚本。那是很久以前的事了,但我相信它抛出了一个异常,从而丢弃了连接。