将 Ajax Web 应用程序迁移到 Web 套接字

Posted

技术标签:

【中文标题】将 Ajax Web 应用程序迁移到 Web 套接字【英文标题】:Migrating Ajax web application to web socket 【发布时间】:2011-01-08 03:46:49 【问题描述】:

我想我只是遗漏了一个小细节,这让我无法看到整个画面。

我有一个 Web 应用程序,它每 x 次使用 ajax 请求来更新客户端的新信息或任务。

我在服务器上也有一个长时间运行的进程,它是一个 java 计算引擎。我希望这个引擎向客户端发送更新。

    我想知道如何将我的 web 应用程序迁移到使用 websocket。可能是phpwebsocket 或类似的。我的服务器可以“决定”向特定客户端发送信息吗?似乎可以查看 php-websocket。

    我的 java 后端长进程能否使用 websocket 服务器向特定客户端发送通知。如何?好吧,我可以说我的java应用程序可以使用一个可以通过websocket而不是http发送的类。

但是 websocket 服务器如何知道向哪个客户端发送“信息”。我对这一切感到困惑。有任何文件可以更详细地解释这一点吗?似乎 websocket 可以创建我的 web 应用程序的一个实例。

谢谢

【问题讨论】:

仅供参考-您可能需要在编码之前阅读一些最近的 websockets 安全问题。 【参考方案1】:

您的服务器将拥有任意数量的活动客户端套接字,它决定写入哪些套接字(可能是为了响应用户的输入)。

phpwebsocket(边缘仍然很粗糙)有一个User 类,其中包含$id$socket(这是底层TCP 套接字)和$handshake 字段。您可以使用关于 User 的附加元数据扩展该类(例如计算标识符)。或者您可以使用从计算 id 到 User 的数组映射。

也许当 Java 计算 n 完成时,您可以查找与该计算关联的套接字,并写入其套接字。

【讨论】:

我的 Java 计算可以“POST”到 ws://mydomain/mysocketapp?user=xx;msg="completed"。然后 websocket 会找到相应的用户/socket 并将消息“echo”发送给用户。 请记住 websocket 在连接后不使用 HTTP,除非您通过 websocket 实现 HTTP。您不一定必须使用 websockets 在您的服务器和 Java 后端之间进行通信。您可以使用另一种形式的进程间通信。 任何进程间通信的指针我可以查看并了解更多信息? @Bastan,您可以查看***的ipc 文章了解一般信息。有一个*** question 专门关于 PHP 和 Java 程序之间的通信。正如它所指出的,您可以使用常规 HTTP(服务器和客户端都在本地主机上)TCP sockets(预先存在,实际上是 WebSocket 的底层,并且有更好的文档)。还有一个工具叫php/java bridge。 太棒了!谢谢你提供的详情。我刚刚在mindprod.com/jgloss/remotefileaccess.html 读到类似的东西

以上是关于将 Ajax Web 应用程序迁移到 Web 套接字的主要内容,如果未能解决你的问题,请参考以下文章

Play Framework 2.5,到 Web 套接字的路由无法编译

在 JavaScript 中,有没有办法将 Web 套接字消息的处理推迟到设置标志之前?

Web 服务与 TCP/IP 套接字 (Java) + SQL 连接

如何将 Sybase 应用程序迁移到 Web?

如何将 Flutter 移动应用迁移到 Flutter Web

如何将现有的地理服务器独立应用程序迁移到 Web 存档?