【问题标题】:JavaScript client failed to send WebSocket frame to WebSocket server on Amazon EC2JavaScript 客户端无法将 WebSocket 帧发送到 Amazon EC2 上的 WebSocket 服务器
【发布时间】:2013-09-05 22:46:22
【问题描述】:

我有一个在 Ubuntu 12.04 EC2 实例上运行的 Web 套接字服务器。我的 Web 套接字服务器是用 Python 编写的,我使用的是 Autobahn WebSockets。

我有一个 JavaScript 客户端,它使用 WebRTC 捕获网络摄像头帧并将它们发送到网络套接字服务器。

我的网络服务器(托管 JavaScript 的地方)未部署在 EC2 上。 python web socket服务器只做视频帧处理,运行在TCP和9000端口上。

我的问题:

JS 客户端可以连接到 web 套接字,服务器接收并处理网络摄像头帧。但是,在 5 或 6 分钟后,客户端停止发送帧并显示以下消息:

到 'ws://x.x.x.x:9000/' 的 WebSocket 连接失败:发送失败 WebSocket 框架。

当我打印错误数据时,我得到“未定义”。

当然,当我在本地测试环境中运行服务器时,这种情况永远不会发生。

【问题讨论】:

  • 原来问题不是因为运行在Amazon EC2上的服务器。经过更多测试,该问题仅在 JS 客户端在谷歌浏览器上运行时出现。如果客户端运行在 FireFox 上,则不存在此问题。目前还不确定问题的根源。一旦我弄清楚来源和解决方案,我会更新帖子。

标签: python amazon-web-services amazon-ec2 websocket


【解决方案1】:

这可能是由 Chrome 扩展程序引起的。

【讨论】:

  • 我不确定。我发现chrome断开了连接。我每秒捕获 5 帧并将它们发送到服务器。出于某种原因,如果我将图像格式从 JPEG 或 PNG 更改为 webp chrome 不会断开连接,并且我可以继续将视频帧从客户端浏览器发送到云服务器长达 12 小时。数据大小(图像大小)很清楚我不确定chrome如何处理页面或进程内存。看到这个帖子(stackoverflow.com/questions/18583948/…)表示类似的问题
  • 我同意 - 这很可能是与数据大小和缓冲区建立相关的内存问题。可能值得查看配置文件部分下的 Chrome 开发工具,看看内存使用是否会随着时间的推移而不稳定。
猜你喜欢
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多