首页 > 解决方案 > JavaScript + PHP & SSE - 服务器发送事件 & MySQL

问题描述

我的可扩展性足够吗?
我的目标是创建一个 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,只需要在客户端更新我的轮询计数,并在服务器端更新我的 sql 记录。

因此,我已经管理了 Client<-Server<-MySQL 拓扑,但是断开连接
如何与 AJAX onbeforeunload 一起工作(例如:小于 2kb@1kbps 的非常小的 json)。从套接字重塑自然心跳,2 或 3 路流的实时音频/视频是使用 WebRTC 完成的,但我们可以,RTCDataChannel(id)EventSource(MySQL)

???
在头脑风暴之后,我认为 window.onbeforeunload 如果它是同步的,而不是异步的,它会起作用。因此,对于一个好的 UI,应该工作得非常快。我只想清除 MySQL 记录。所以 SSE 可以告诉其他用户“我不在了”

[ https://caniuse.com/#feat=eventsource]
[ https://caniuse.com/#search=beforeunload]

标签: javascriptphphtmlmysqlserver-sent-events

解决方案


因此,您想使用 SSE 和 MySQL 作为信号服务器。

实际上,您假设您需要 MySQL,而您不需要。我能够用纯文本(它只是正在交换的几行)而不是数据库创建一个可靠的信令服务器。请参阅https://github.com/nielsbaloe/webrtc-php

关于您的关注点:

  • SSE 的可扩展性不是很好,对于最多一百个客户来说就足够了。所以,对于我所有的小型自制项目,这很好。语法上 SSE 和 Websockets 是相同的,所以当我想扩大规模时,代码将几乎相同。
  • 我不明白你为什么在谈论 window.onbeforeunload()。根本没有必要使用它,实际上,不要使用它。SSE 负责网页的自动重新加载,所以绝对不需要自己写任何东西。
  • 性能很好,SSE 的运行速度和 websockets 一样快,现在使用 HTTP/1.1,完全一样。仅对于“帖子”,它需要更长的时间,因为打开了一个新的套接字。从服务器到客户端有一个小的延迟,因为客户端每隔几秒就会询问一次新信息(我在我的项目中缩小到 1 秒),但是作为信号服务器并不重要,在 2 秒内客户端已经找到彼此(而不是说 400 毫秒)。

推荐阅读