本文介绍如何创建一个 IMCloud Web 项目,实现即时通讯功能。你也可以通过阅读代码,了解即时通讯的最佳实践。
React 16.10.2+
Node.js(推荐使用 LTS 版本)
npm
TypeScript
npx create-react-app my-chat-app --template typescript
typescriptcd my-chat-app
typescriptnpm install @volcengine/im-web-sdk @volcengine/im-uikit-react
typescript将以下代码复制到 App.tsx 中,并修改 APP_ID 为您在控制台申请的 App 对应的 AppID,修改 getToken 为调用您业务后端接口获取的 token。
import { useEffect, useRef, useState } from "react";
import { UIKit } from "@volcengine/im-uikit-react";
import { BytedIM, im_proto } from "@volcengine/im-web-sdk";
import "@volcengine/im-uikit-react/dist/es/index.css";
let APP_ID = 666675; // TODO: 修改为 App 对应的 AppID
// 需要修改为对应的业务后端接口调用
const getToken = async ({appId, userId}: {
appId: number;
userId: string;
}) => {
// TODO: 调用对应的业务后端接口,获取对应用户的 token
return token;
};
export default function App() {
const initCalled = useRef(false);
const [im, setIm] = useState<BytedIM>();
useEffect(() => {
if (initCalled.current) return;
initCalled.current = true;
const userId = prompt('输入登录用户 ID', '10001') || '10001';
const bytedIm = new BytedIM(
{
userId: userId,
deviceId: userId,
apiUrl: "https://imapi.volcvideo.com",
frontierUrl: "wss://frontier-sinf.ivolces.com/ws/v2",
authType: im_proto.AuthType.TOKEN_AUTH,
appId: APP_ID,
token: () =>
getToken({
appId: APP_ID,
userId: userId,
}),
},
[]
);
bytedIm.init();
setIm(bytedIm);
}, []);
return (
<div className="container-box" style={{height: '100vh', width: '100vw'}}>
<UIKit im={im}/>
</div>
);
};
typescriptnpm run start
typescript启动后在浏览器中开启页面,输入想登录的用户 ID(下面以 1001 为例)。

在左上角输入框中输入另一位用户的 ID,点击发起后即可发起会话(下面以 1002 为例)。

)
