swoole可以代替ajax轮询吗

发布于 2022-09-04 17:31:49 字数 32 浏览 11 评论 0

swoole可以代替ajax轮询吗,用到什么协议呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

所有深爱都是秘密 2022-09-11 17:31:49

可以建立websocket连接实现长连接

挽心 2022-09-11 17:31:49

原则上是可以的。

可以使用 swoole 开启 websocket 功能。 websocket 出现的其中一个原因就是为了解决 ajax 轮询的空耗资源以及不及时性而出现的。

使用 websocket 后,不论是客户端还是服务器端有新消息都可以实时互相发送。不仅及时,同时可以避免空轮询。

但是 ajax 轮询也不是没有可取之处,比如说不需要即时获取消息的:如每隔一分钟查看一下是否有新公告。公告本身不需要即时获取的,同时公告本身也比较多的情况下。
还有就是本身就是打算要轮询的,比如每个5分钟发一个请求,目的就是保持当前用户在线状态的。

同时还有个比较致命的问题就是 websocket 相对于 ajax 轮询来说比较复杂。ajax 本身是建立在普通 http 请求上的,属于半双工操作,即客户端有些主动权,即我想获取信息时(事件触发)我就发个请求即可,然后在同一个进程里我继续等待服务器返回数据并做相应处理即可。但是 websocket 属于全双工操作,即客户端和服务器是对等的,服务器随时都有可能发消息给客户端,客户端也有可能随时发消息给服务端,程序思维不在是线性的了。需要重新架构你的程序。

悸初 2022-09-11 17:31:49

js:socket.io 监听端口就行啦~

有问题,可以私信我~

半步萧音过轻尘 2022-09-11 17:31:49

前端使用原生的websocket请求即可,给你看个例子:

this.websocket = new WebSocket("ws://url_websocket_server")
this.websocket.onopen = function (evt) {
    console.log("已连接websocket服务器");
}
var _this = this
this.websocket.onmessage = function (evt) {
    var data = JSON.parse(evt.data)
    console.log(data)
}
this.websocket.onclose = function (evt) {
    console.log("websocket close");
}
池予 2022-09-11 17:31:49

Swoole 可以通过 swoole_websocket_server 类来进行 WebSocket 协议开发。前端可以使用 js 原生的 WebSocket 进行连接,但是 js 原生的 WebSocket 最低要求 IE10,IE10之前的版本只能通过 Flash 来进行 WebSocket 连接。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文