协同编辑模块

概览

你可以使用支持热插拔的模块@opensumi/ide-collaboration来为你的 IDE 的编辑器部分实现实时多人协同编辑功能。

平台支持

模块目前只支持 Browser + Node 的 Cloud IDE 场景。

使用

该模块的使用很简单,只需要在你的 IDE 中的 Browser 端和 Node 端分别添加该模块。

// Browser 端
renderApp({
  modules: [...CommonBrowserModules, CollaborationModule],
  wsPath: 'your-ws-path-here',

// Node 端
startServer({
  modules: [...CommonNodeModules, CollaborationModule],

然后,将用户信息给注册到 browser 侧的CollaborationModuleContribution即可。

export interface CollaborationModuleContribution {
  info: UserInfo;
}

export interface UserInfo {
  id: string; // unique id
  nickname: string; // will be displayed on live cursor
}

对该模块的一个简单贡献如下所示。

import {
  CollaborationModuleContribution,
  UserInfo
} from '@opensumi/ide-collaboration';
import { Domain } from '@opensumi/ide-core-common';

@Domain(CollaborationModuleContribution)
export class SampleContribution implements CollaborationModuleContribution {
  info: UserInfo = {
    id: 'your id',
    nickname: 'your name'
  };
}

目前该模块的通信走 TCP 12345 端口。该模块通信的 URL 与你在 IDE 的里定义的 wsPath 一致(除了端口为 12345)。请检查并配置你的服务器的防火墙设置。

限制

目前协同编辑模块为早期版本。并且,由于当前 OpenSumi 的设计考虑的是客户端(Browser)/服务端(Node)一对一的架构,该模块仍存有诸多限制。

  • 不支持 IDE 编辑器外的协同编辑功能(如终端)
  • 不支持处理工作区文件的外部修改(如 git pull,用其他软件而非编辑器修改了文件内容)
  • 不支持纯前端与 Electron 平台
  • 不支持 IDE 内跨文件的修改(如使用 vscode 插件进行变量重命名重构)