Websocket 可以接收来自 ajax 的数据吗?

Posted

技术标签:

【中文标题】Websocket 可以接收来自 ajax 的数据吗?【英文标题】:Can Websocket able to receive data from ajax? 【发布时间】:2014-10-31 15:36:41 【问题描述】:

我正在尝试构建一个 phphtml5 websocket 聊天系统,其中一端是套接字,另一端是 ajax。 PHP 的 socket_recv() 函数是否可以从 ajax/mysql 或任何其他来源(不是通过“send”方法或套接字发送的)接收数据?

** 我们希望在 ajax 中有一个端点,因为所有浏览器特别是 IE 仍然不支持 websocket。

请帮忙。

【问题讨论】:

【参考方案1】:

如果您不打算在客户端使用 WebSocket,那么您也不需要在服务器端使用它们。 (事实上​​,你不能使用它们,除非双方都支持它们。) AJAX 创建正常的 HTTP 请求;您可以像处理 PHP 中的任何其他请求一样处理它们。

另外,至关重要的是:PHP socket_ 函数是原始 TCP/UDP 套接字,不是 WebSocket。 WebSocket 协议比它们直接支持的要复杂得多。 PHP 套接字可以在实现 WebSockets 的过程中使用,但最好使用像Ratchet 这样的库,它已经为您完成了繁重的工作。

【讨论】:

Ratchet 也使用 websocket,所以在 IE 中无法使用。如果 Websocket 一端不支持,我打算在两端使用 ajax(长轮询) @RejoanulAlam Ratchet 支持 web-socket-js,它是旧浏览器的 polyfill。你可以在这里找到更多信息:socketo.me/docs/flash

以上是关于Websocket 可以接收来自 ajax 的数据吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥接收到的 websocket 数据作为缓冲区出来?

Ajax的封装。

h5中websocket

websocket client怎样维持心跳,有没有具体的栗子

如何在目标站点上抓取通过 websocket 流式传输的 JSON 数据

Websocket 无法接收数据