gpt4 book ai didi

Java/PHP - 聊天 session 在窗口刷新或在应用程序中打开新窗口时刷新

转载 作者:行者123 更新时间:2023-12-01 13:32:44 25 4
gpt4 key购买 nike

在网络应用程序中,我在网页(.HTML)中嵌入了一个聊天小工具。我的应用程序 Java 和聊天小工具的后端代码与 .PHP 进行通信。我无法访问 .PHP 环境。

我只能使用 Java 编写代码来处理 HTML 请求。

问题:当我在浏览器上单击刷新时,每次都会开始新的聊天 session 。即使当我从一个页面跳转到另一页面时,聊天 session 也会刷新并开始新的聊天。

我不打算在 .PHP 环境中进行任何更改,但需要更改 Java 中的代码

问题:我想以.PHP环境的方式塑造程序认为页面尚未刷新并且不会中断 session 。

我认为代理可能是解决方案,但如何实现这些?任何其他解决方案相同。

最佳答案

要构建代理,首先在小部件将与之通信的端口上创建 ServerSocket,然后开始在其上接受连接。

当新连接进入时,为 php 服务器创建一个新的 Socket。然后,您必须将输入从一个管道传输到另一个的输出,反之亦然。

这是一个通用代理。对于您的情况,您必须添加一些逻辑来检测连接是否已存在(可能使用 cookie),然后重用现有套接字而不是创建新套接字。

不幸的是,解析输入并让协议(protocol)与 php 正在执行的操作相匹配需要一些工作。

(编辑以添加示例)

这是一个简单的通用代理示例,可以帮助您入门。运行此命令,然后将浏览器指向本地主机。

public class Proxy {
public static void main(String args[]) throws Exception {
ServerSocket server = new ServerSocket(80);
Socket browser = server.accept();
Socket remote = new Socket("google.com", 80);
pipe(browser.getInputStream(), remote.getOutputStream());
pipe(remote.getInputStream(), browser.getOutputStream());
remote.close();
server.close();
}

private static void pipe(InputStream in, OutputStream out) throws IOException {
while(in.available() == 0) {
Thread.yield();
}
while(in.available() > 0) {
int data = in.read();
System.out.write(data);
out.write(data);
}
}
}

一个可行的解决方案需要是多线程(或异步)的,而不是仅仅在服务器之间传输数据,您必须进入那里并检查它,然后决定是否需要打开新套接字或重新使用现有的。

关于Java/PHP - 聊天 session 在窗口刷新或在应用程序中打开新窗口时刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21474246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com