GPT只能在队长电脑上使用,队员访问队长环境就加载不出来了?别急,来试试这样解决原创
金蝶云社区-醉倾梦
醉倾梦
2人赞赏了该文章 455次浏览 未经作者许可,禁止转载编辑于2024年04月28日 19:10:53

问题描述:

GPT只能在队长的机器上使用,队员使用内网IP登录队长的苍穹环境之后GPT返回不出消息来,看运行日志是成功调用了服务的,就是返回不到队员的苍穹上,就是发消息之后一直等待,无反应。

队长电脑有反应:

image.png

队员电脑无反应:

image.png

从图中看出,用内网IP访问的时候消息就加载不出来,用127.0.0.1的话才可以。


原因分析:

我们知道,在聊天的时候,这种情况一般采用的是TCP长连接的形式进行信息交互的。在浏览器中,我们可以查看WebSocket来了解在这一次的交互中到底发生了什么。

使用127.0.0.1的时候,能够正常访问gpt的控制台提示,此时的websocket是成功的。

image.png

但是当用内网IP登陆的时候,就不能正常进行websocket了

image.png

这是为什么呢?我们看一下WebSocket的具体信息。

image.png

我们可以看到Origin和Host是不一样的,即在WebSocket的过程中,其实是浏览器Origin到Host的Socket连接。因此在这种连接当中,就可能会出现跨域问题。所以当Host和Origin都设置为一样的IP时,连接才可以正常工作,因为这两个值匹配,满足了同源策略的要求。


问题解决

所以归根结底还是IP的问题。所以此时如果以重复替换域名的方式(即先用内网IP访问,访问之后自动跳转到127.0.0.1,然后又重复利用内网IP替换127.0.0.1)可能就不太行得通了。

所以这里我们可以分为两种苍穹服务启动模式来换IP,一种是开发者工具内启动,一种是IDEA内启动

如果利用开发者工具启动,可以跳转到:https://developer.kingdee.com/article/309126299510156032?productLineId=29&lang=zh-CN

以此来修改127.0.0.1来修改环境的IP


但是对于开发者大赛来说这种无疑是比较麻烦的,并且内网IP地址也在DHCP的情况下不断变动,所以我更建议大家在IDEA内修改IP并启动苍穹服务,而且在开发过程中我们还需要写插件等操作,无疑IDEA是非常重要的启动方式。

在IDEA中修改IP就比较简单了,直接替换掉CosmicLauncher.java和DebugApplication.java中的所有127.0.0.1就行了。当然由于IP地址在变动,一个一个修改也不方便,所以我们可以稍微修改下这两个文件中的代码,比如加一个全局变量,然后替换所有IP,再在启动项中赋值即可,比如:

public static String IP_ADDRESS;
public static void setIP(String IP_ADDRESS) {
    DebugApplication.IP_ADDRESS = IP_ADDRESS;
}

然后将所有有关IP地址的字符串替换成IP_ADDRESS即可,就如:

image.png

image.png

解决后我们就可以看到我们用内网IP访问之后,GPT就能成功回答了。

image.png

image.png


赞 2