问题描述
我的可扩展性足够吗?
我的目标是创建一个 MySQL WebRTC 模块。
在研究了服务器到客户端通信的所有替代方案后,SSE 非常适合推送 MySQL 通知。
我想不可避免地替换WebSockets。
我真的可以使用 window.onbeforeunload() 吗?
Socket.IO 和 Node 服务器是 < lyt > $var </lyt >,但我不能依赖我的托管服务提供商提供开放端口。
于是我发现SSE是高度兼容的,还有window.onbeforeunload = () => abort(id);
想象一个SQL->PHP->Client Signaling Server
表现如何?
我不关心延迟,因为我只使用 SSE 进行通知。
Web RTC 仅适用于双向或三向呼叫。
用于聊天的 SSE,只需要更新我的 poll-counts 客户端,并更新我的 sql 记录服务器端。
因此
我已经管理了 Client<-Server<-MySQL 拓扑,但是断开连接如何与 AJAX onbeforeunload 一起工作(例如:非常小的 json 小于 2kb@1kbps) 。
重新发明套接字的自然心跳,用于 2 或 3 路流的实时音频/视频是使用 WebRTC 完成的,但我们可以将RTCDataChannel(id)与EventSource(MySQL) 相关联
???
经过头脑风暴,我认为 window.onbeforeunload 如果它是同步的,而不是异步的,那么它会起作用。
因此,对于一个好的 UI,应该工作得非常快。
我只想刷新 MySQL 记录。
所以SSE可以告诉其他用户“我不在了”
[
[
1楼
Niels
2
2019-06-03 11:36:05
因此,您想使用 SSE 和 MySQL 作为信令服务器。
实际上,您假设您需要为此使用 MySQL,而您不需要。 我能够使用纯文本(无论如何只是交换几行)而不是数据库来创建可靠的信令服务器。 请参阅 。
关于您的关注点:
- SSE 的可扩展性不是很强,对于最多 100 个客户端来说已经足够了。 所以,对于我所有的小型自制项目,这很好。 SSE 和 Websockets 在语法上是一样的,所以当我想向上扩展时,代码几乎是一样的。
- 我不明白你为什么在谈论 window.onbeforeunload()。 根本没有必要使用那个,实际上,不要使用它。 SSE负责网页的自动重新加载,因此绝对不需要自己编写任何类似的东西。
- 性能很棒,SSE 和 websockets 一样快,因为现在使用 HTTP/1.1,完全一样。 只有“帖子”需要更长的时间,因为打开了一个新的套接字。 从服务器到客户端有一个小的延迟,因为客户端每隔几秒钟就会请求一次新信息(我在我的项目中缩小到 1 秒),但是作为信号服务器并不重要,客户端在 2 秒内找到了彼此(而不是说 400 毫秒)。