tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

Electron

PDF
聚焦模式
字号
最后更新时间: 2026-03-03 11:29:21
本文主要介绍如何快速运行腾讯云即时通信 Chat Demo(Electron)并了解集成 Electron SDK 的方法。

环境要求

平台
版本
Electron
13.1.5 及以上版本。
Node.js
v14.2.0

支持平台

目前支持 Macos 和 Windows 两个平台。

体验 DEMO

在开始接入前,您可以体验我们的 DEMO ,快速了解腾讯云 Chat Electron SDK。

前提条件

您已 注册腾讯云 账号,并完成 实名认证

操作步骤

步骤1:创建应用

说明:
如果您已有应用,请记录其 SDKAppID 并 获取密钥信息
同一个腾讯云账号,最多可创建300个即时通信 Chat 应用。若已有300个应用,您可以先 停用并删除 无需使用的应用后再创建新的应用。应用删除后,该 SDKAppID 对应的所有数据和服务不可恢复,请谨慎操作。
2. 单击创建新应用,在创建应用对话框中输入您的应用名称,单击确定

3. 请保存 SDKAppID 信息。可在控制台总览页查看新建应用的状态、业务版本、SDKAppID、标签、创建时间以及到期时间。

4. 单击创建后的应用,左侧导航栏单击辅助工具 > UserSig 生成&校验,创建一个 UserID 及其对应的 UserSig,复制签名信息,后续登录使用。


步骤2:选择适合的方法集成 Electron SDK

Chat 提供了两种方式来即成,您可以选择最合适的方案来即成:
继承方式
适用场景
使用 DEMO
Chat Demo包含完整的聊天功能,代码已开源,如果您需要实现聊天类似场景,可以使用 Demo进行二次开发。可立即体验 Demo
自实现
如果 Demo 不能满足您应用的功能界面需求,可以使用该方法。
为帮助您更好的理解 Chat SDK 的各 API,我们还提供了 API 文档

步骤3:使用 Demo

说明:
为尊重表情设计版权,Chat Demo/TUIKit 工程中不包含大表情元素切图,正式上线商用前请您替换为自己设计或拥有版权的其他表情包。下图所示默认的小黄脸表情包版权归腾讯云所有,您可以通过升级至 Chat 专业版 Plus 和企业版 免费使用该表情包。



1. 克隆即时通信 Chat Electron Demo 源码到本地。
git clone https://github.com/TencentCloud/tc-chat-demo-electron.git
2. 安装项目依赖。
// 项目根目录
npm install

// 渲染进程目录
cd src/client
npm install
3. 项目运行。
// 项目根目录
npm start
4. 项目打包。
// mac打包
npm run build:mac
// windows打包
npm run build:windows
说明:
demo 中主进程的目录为src/app/main.js,渲染进程目录为src/client。如运行过程出现问题,可优先通过常见问题查找解决。

步骤4:自实现

安装 Electron SDK 使用如下命令,安装 Electron SDK最新版本 在命令行执行:
npm install im_electron_sdk
完成 SDK 初始化
1. TimMain中传入您的sdkAppID
// 主进程
const TimMain = require('im_electron_sdk/dist/main')

const sdkappid = 0;// 可以去腾讯云即时通信IM控制台申请
const tim = new TimMain({
sdkappid:sdkappid
})
2. 调用TIMInit,完成 SDK 初始化。
//渲染进程
const TimRender = require('im_electron_sdk/dist/render')
const timRender = new TimRender();
// 初始化
timRender.TIMInit()
3. 登录测试用户。 此时,您可以使用最开始的时候,在控制台申城的测试账户,完成登录验证。 调用timRender.TIMLogin方法,登录一个测试用户。 当返回值 code为0时,登录成功。
const TimRender = require('im_electron_sdk/dist/render')
const timRender = new TimRender();
let {code} = await timRender.TIMLogin({
userID:"userID",
userSig:"userSig" // 参考userSig生成
})
说明:
该账户仅限开发测试使用,应用上线前,正确的UserSig 签发方式是将UserSig的计算代码集成到您的服务端,并提供面向 APP的接口。在需要 UserSig时由您的 APP 向业务服务器发起请求获取动态 UserSig。更多详情请参见 服务端生成 UserSig
发送信息 此处以发送文本消息距离,code返回 0 则为消息发送成功。 代码示例:
const TimRender = require('im_electron_sdk/dist/render')
const timRender = new TimRender();
let param:MsgSendMessageParamsV2 = { // param of TIMMsgSendMessage
conv_id: "conv_id",
conv_type: 1,
params: {
message_elem_array: [{
elem_type: 1,
text_elem_content:'Hello Tencent!',

}],
message_sender: "senderID",
},
callback: (data) => {}
}
let {code} = await timRender.TIMMsgSendMessageV2(param);
说明:
如果发送失败,可能是由于您的 sdkAppID 不支持陌生人发送消息,您可至控制台开启,用于测试。请点击此链接,关闭好友关系链检查。
获取会话列表 在上一个步骤中,完成发送测试消息,现在可登录另一个测试账户,拉取会话列表。 常见应用场景为: 在启动应用程序后立即获取会话列表,然后监听长链接以实时更新会话列表的变化。
let param:getConvList = {
userData:userData,
}
let data:commonResult<convInfo[]> = await timRenderInstance.TIMConvGetConvList(param)
此时,您可以看到您在上一步中,使用另一个测试账号发来的消息的会话。
接收消息 常见应用场景为:
1. 界面进入新的会话后,首先一次性请求一定数量的历史消息,用于展示历史消息列表。
2. 监听长链接,实时接收新的消息,将其添加进历史消息列表中。
一次性请求历史消息列表
let param:MsgGetMsgListParams = {
conv_id: conv_id,
conv_type: conv_type,
params: {
msg_getmsglist_param_last_msg: msg,
msg_getmsglist_param_count: 20,
msg_getmsglist_param_is_remble: true,
},
user_data: user_data
}
let msgList:commonResult<Json_value_msg[]> = await timRenderInstance.TIMMsgGetMsgList(param);
监听实时获取新消息 绑定 callback 示例代码如下:
let param : TIMRecvNewMsgCallbackParams = {
callback: (...args)=>{},
user_data: user_data
}
timRenderInstance.TIMAddRecvNewMsgCallback(param);
此时,您已基本完成 IM 模块开发,可以发送接收消息,也可以进入不同的会话。 您可以继续完成 群组,用户资料,关系链,离线推送,本地搜索 等相关功能开发。 详情可查看 API 文档

常见问题

支持哪些平台?

目前支持 Macos 和 Windows 两个平台。

错误码如何查询?

Chat SDK 的 API 层面错误码,请查看 错误码

安装开发环境问题,出现 npm ERR! gyp ERR! stack TypeError: Cannot assign to read only property 'cflags' of object '#<Object>' 错误如何解决?

请降低 node 版本,建议使用16.18.1。

安装开发环境问题,出现 gypgyp ERR!ERR 错误如何解决?

请参见 gypgyp ERR!ERR!

执行 npm install 出现错误 npm ERR! Fix the upstream dependency conflict, or retry,如何解决?

npmV7之前的版本遇到依赖冲突会忽视依赖冲突,继续进行安装 npmV7版本开始不会自动进行忽略,需要用户手动输入命令 请执行以下命令:
npm install --force


执行 npm run start 出现错误 Error: error:0308010C:digital envelope routines::unsupported,如何解决?

请降低node版本,建议使用16.18.1。

Mac 端 Demo 执行 npm run start 会出现白屏,如何解决?

Mac 端执行npm run start 会出现白屏,原因是渲染进程的代码还没有 build 完成,主进程打开的3000端口为空页面,当渲染进程代码 build 完成重新刷新窗口后即可解决问题。或者执行cd src/client && npm run dev:react, npm run dev:electron, 分开启动渲染进程和主进程。

vue-cli-plugin-electron-builder 构建的项目如何使用 native modules?

使用vue-cli-plugin-electron-builder 构建的项目使用native modules 请参见 No native build was found for platform = xxx

webpack 构建的项目如何使用 native modules?

自己使用webpack 构建的项目使用native modules 请参见 Windows 下常见问题

出现 Dynamic Linking Error?

Dynamic Linking Error. electron-builder 配置
extraFiles:[
{
"from": "./node_modules/im_electron_sdk/lib/",
"to": "./Resources",
"filter": [
"**/*"
]
}
]

使用Electron-vite出现__dirname is not defined ?

由于Electron-vite不支持在渲染进程(renderer) 进行进程间的通信,需要将 Chat SDK 写到preload中使用 (主进程的代码正常写到主进程即可)。具体可参考 electron-vite文档
使用方法相同,可参考文档的实例代码。下面以初始化为例,使用方法如下:
// 主进程内容正常写到主进程
// main/index.ts (示例路径)
const TimMain = require('im_electron_sdk/dist/main')
const sdkappid = 0;
const tim = new TimMain({
sdkappid:sdkappid
})
// 在 preload 中使用im sdk
// preload/index.ts (示例路径)
import TimRender from 'im_electron_sdk/dist/renderer'
const timRender = new TimRender();


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈