opensumi / core

🚀 A framework helps you quickly build AI Native IDE products.
https://opensumi.com
MIT License
3.01k stars 386 forks source link

[Question] 升级到 3.1.2 之后,`createSocketConnection` 不再被支持,该方法的替代方案是怎样的? #3802

Closed Moskize91 closed 5 months ago

Moskize91 commented 5 months ago

我基于 https://github.com/opensumi/ide-electron 启动我的环境。 但是这个 demo 是基于 2.27.2 版,这个版本太老了,我希望体验 opensumi 的 AI 功能,因此升级到了 3.1.2 版。 这个版本的 yarn build 直接失败了,原因是 src/browser/app.tsx 的 如下代码编译无法通过:

import { createSocketConnection } from '@opensumi/ide-connection/lib/node';

可以发现 createSocketConnection 在 3.1.2 版本中不再支持。 我查阅了 https://github.com/opensumi/core/wiki/%E9%9B%86%E6%88%90%E6%8E%A5%E5%85%A5-Breaking-Changes 中相关信息,没有查阅到和 createSocketConnection 有关的 breaking changes 信息。

请问该方法有什么代替写法?

erha19 commented 5 months ago

@bytemain 帮忙看下

bytemain commented 5 months ago

我稍后更新下文档和 ide-electron

Moskize91 commented 5 months ago

我看到现在 https://github.com/opensumi/ide-electron 的 main branch 的 github action 是失败状态,目前在调整这个 demo 以支持 3.x 版本的 AI 功能对吧。

bytemain commented 5 months ago

如果你是想运行起来 ide-electron,直接移除掉这个参数即可。

可以参考:https://github.com/opensumi/ide-electron/commit/8008bdc1c52893f9090eafbbd35e750af9268636


Q: createSocketConnection 不再被支持,该方法的替代方案是怎样的? A: 由于 app.start 的第三个参数已经 deprecated, 所以 createSocketConnection 这个方法是没有用的了。

如果你实在需要创建 SocketConnection,等价方案是这样:

const socket = await (window as any).createRPCNetConnection();
const connection = new NetSocketConnection(socket);

如果你需要自定义的通信, 如把这里的 SocketConnection 改成基于 stdio 之类的,可以参考 Codeblitz 自定义通信方式: https://github.com/opensumi/codeblitz/blob/main/packages/sumi-core/src/client/index.ts#L128

Moskize91 commented 5 months ago

@bytemain 新的 demo 已经能跑起来了,感谢🙏