即时通讯(IM)开源项目OpenIM对WebAssembly支持,提升web端体验

简介: 即时通讯(IM)开源项目OpenIM对WebAssembly支持,提升web端体验

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

WebAssembly 是什么?
2019 年 12 月,W3C 标准批准了第四种官方语言:WebAssembly (Wasm)。这种语言在结构、使用和功能方面与以前的语言有很大不同。

WebAssembly 是一种新的编码方式,可以在现代的Web浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如 C / C ++等语言提供一个编译目标,以便它们可以在 Web 上运行。它也被设计为可以与 JavaScript 共存,允许两者一起工作。
1.jpg

对于Web平台而言,WebAssembly 具有巨大的意义——它提供了一条途径,以使得以各种语言编写的代码都可以以接近原生的速度在 Web 中运行。在这种情况下,以前无法以此方式运行的客户端软件都将可以运行在 Web 中。

WebAssembly 被设计为可以和 JavaScript 一起协同工作——通过使用 WebAssembly 的 JavaScript API,你可以把 WebAssembly 模块加载到一个 JavaScript 应用中并且在两者之间共享功能。这允许你在同一个应用中利用 WebAssembly 的性能和威力以及 JavaScript 的表达力和灵活性。

什么时候使用WebAssembly?
开发人员可能希望在两种一般情况下使用 Wasm。一种是作为想要编写性能更高的代码的 Web 开发人员。另一种是作为软件开发人员,希望将现有技能与其他编程语言(如 C++ 或 Rust)结合使用来构建在 Web 上运行并通过 Web 浏览器访问用户的软件,而无需额外的步骤(例如下载和安装程序)。 虽然开发人员在第一种情况下仍需要使用 JavaScript,但他们也可以使用 Wasm 将需要接近原生速度的部分生成为模块并使用 JS 加载它们。这是因为 JS 和 WebAssembly 模块之间双向通信的能力使应用程序能够利用 WebAssembly 的出色性能。

2.jpg

开发人员可以继续使用 React 等流行的 UI 库来构建 Web 应用程序的 UI,并间接使用 Wasm 来实现高性能的内部逻辑。Figma 等流行的应用程序通过使用 React 和 C++ 采用了这种技术。 对于第二种情况,开发人员可以使用 Rust、C++ 或 C# 等语言与 Blazor 一起编写 Web 应用程序。或者甚至用 C# 设计一个游戏并轻松将其编译为 Wasm,然后通过网络将其提供给消费者。

简而言之,开发人员可以通过以下方式使用 Wasm:

除了 JS,开发者还可以在 Wasm 中编写高性能的关键性代码,并用 JS 导入。
开发人员可以使用 Wasm 作为编译目标,编写使其他编程语言能够在 Web 上运行的代码。
OpenIM通过WebAssembly解决了什么问题?
OpenIM是由IM技术专家打造的开源的即时通讯组件。OpenIM包括IM服务端和客户端SDK,实现了高性能、轻量级、易扩展等重要特性。开发者通过集成OpenIM组件,并私有化部署服务端,可以将即时通讯、实时网络能力快速集成到自身应用中,并确保业务数据的安全性和私密性。

目前github 11k star,上万开发者,广泛应用在政务协同办公,社交等领域。重点有如下特色

(1)开源:核心代码开源,数据自我掌控,打造全球领先的IM开源社区,括客户端SDK和服务端,打造全球领先的IM开源社区。

(2)易扩展:服务端采用golang实现,首创“一切皆消息”的通讯模型,轻松实现自定义消息和扩展功能。

(3)高性能:支持集群分层治理架构,经受过海量用户检验,抽象在线消息、离线消息、历史消息存储模型。

(4)全平台支持:iOS、Android原生;Flutter、uni-app、ReactNative跨端;React、Vue等所有主流web前端框架;小程序;PC支持Electron。

我们的客户端SDK底层库openim-sdk-core是通过Go语言编写,并通过Gomobile工具打包为AAR和Framework库轻松集成到Android和iOS两端,并且扩展支持了部分主流跨平台开发框架如:Flutter 、ReactNative、Uniapp等。

现在我们借助WebAssembly技术将openim-sdk-core再次移植到了Web平台,底层复用一套代码,降低了SDK的维护成本,同时充分发挥wasm的特性。帮助开发者可以更加快速、稳定的将即时通讯、实时网络能力集成到自身应用中。

同时,我们还借助sql.js(同样使用emscripten将SQLite编译为 webassembly)和IndexedDB在Web环境中增加了消息本地存储能力,这使得SDK整体使用更加高效。当前大多数IM的JSSDK都是直接通过API每次到服务器拉取大量数据,给服务器带来巨大压力的同时也让用户可能获得不太好的体验,如弱网环境下获取聊天记录的漫长等待。但在open-im-sdk-wasm中,因为消息记录都被储存在了IndexedDB中,使得用户可以稳定达到100~200ms内拉取记录的丝滑体验。

github地址:
https://github.com/OpenIMSDK/

官网:https://www.rentsoft.cn/
3.jpg

WebAssembly的未来
WebAssembly 是作为客户端技术发明的,但它也被证明在服务器端非常有用。 服务器端 WebAssembly 在现代 Web 和服务端应用程序中都存在至关重要的优势。

高性能。WebAssembly 实现了接近原生的性能。与 Java、Python 或 JavaScript 运行时相比,它可以快 10 倍到 100 倍(这怎么可能?)。它也比 Docker 快得多,尤其是在冷启动和系统访问方面。
安全。WebAssembly 是一个具有基于能力的安全模型的沙箱。它不仅比原生二进制文件更安全,而且比 Docker 这样的操作系统级容器更安全。然而,它提供了对底层系统的访问,包括新的硬件功能。
可移植。WebAssembly 应用程序可以用 C、C++、Rust、Go 编写,并且无需更改即可在不同的操作系统和硬件平台上运行。
易于管理。WebAssembly 程序可以由其他应用程序配置、启动、热交换、停止和移动。
WASI是一种将 WebAssembly 跑在任何系统上的标准化系统接口,当 WebAssembly 的性能逐渐增强时,WASI 可以提供一种可行的方式,在任意平台上运行任意的代码,就像 Docker 所做的一样,但是不需要受限于操作系统。正如 Docker 的创始人所说:

“ 如果 WASM 和 WASI 早在 2008 年就存在,那么我们就不需要创建 Docker。可见 Wasm 是多么重要。服务器上的 WebAssembly 将会是“计算”的未来模式。而现在的问题是缺少标准化的系统接口。希望 WASI 能够胜任这项工作!“

Wasm 虽然起源于 Web,但如今,它已经不止于 Web。那就让我们来一起期待 Wasm 带来的,那个拥有无限可能的世界吧!

目录
相关文章
|
3天前
|
Rust JavaScript 前端开发
使用WebAssembly提升Web应用性能
使用WebAssembly提升Web应用性能
|
5天前
|
Java API 开发工具
开源即时通讯IM框架 MobileIMSDK v6.5 发布
本次更新为次要版本更新,进行了bug修复和优化升级(更新历史详见:码云 Release Notes、Github Release Notes)。 MobileIMSDK 可能是市面上唯一同时支持 UDP+TCP+WebSocket 三种协议的同类开源IM框架。轻量级、高度提炼,历经10年、久经考验。客户端支持iOS、Android、Java、H5、微信小程序、Uniapp,服务端基于Netty。
47 2
|
5天前
|
安全 Java 数据库
即时通讯技术文集(第37期):IM代码入门实践(Part1) [共16篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第37 期。
23 2
|
5天前
|
Web App开发 缓存 前端开发
【专栏】探索前端技术WebAssembly和Progressive Web Apps(PWA)如何塑造前端开发的未来
【4月更文挑战第27天】本文探讨了WebAssembly和Progressive Web Apps(PWA)如何塑造前端开发的未来。WebAssembly是一种低级字节码格式,允许在浏览器中运行接近原生性能的代码,解决JavaScript在高性能计算上的局限。PWA则通过Service Workers等技术提升网站的离线使用和性能,提供类似原生应用的体验。这两项技术的崛起将使前端开发更高效、多样化,并推动Web应用向更离线化和本地化发展。随着5G和物联网的发展,前端技术将在边缘计算和智能设备中发挥更大作用。开发者需持续学习适应新技术,以应对这个快速变化的领域。
|
5天前
|
安全 开发者 Docker
总结反思 持续进步-开源即时通讯(IM)项目OpenIM 新版本release-v3.7发布
背景 过去,我们团队对开源项目的认知较浅,过分追求进度,而忽视了代码的质量和规范。这导致了一些问题,例如部署流程设计不当:流程复杂、不规范,以及Mac与Windows部署的明显缺陷。这些问题不仅给开发者带来了困扰,也增加了社区维护的难度。 针对这些挑战,我们团队进行了深刻的反思并总结出了相关问题。目前,我们正在专注于提高代码质量和规范化工作,并在完善我们的开源贡献流程,以吸引更多贡献者参与。我们相信这是关键步骤,以扩大社区的影响力并将OpenIM发展成为一流的开源项目。 为此,我们已规划推出release-v3.7版本,该版本将全面改造部署、规范和流程等方面,并且与3.6版本数据完全兼容。
41 0
|
5天前
|
自然语言处理 监控 数据可视化
海拍客与瓴羊达成合作,通过智能客服系统提升员工内部服务体验
海拍客与瓴羊达成合作,通过智能客服系统提升员工内部服务体验
|
5天前
|
自然语言处理 监控 机器人
中国联通济南分公司与瓴羊达成合作,以智能客服系统提升员工内部服务体验
中国联通济南分公司与瓴羊达成合作,以智能客服系统提升员工内部服务体验
|
5天前
|
存储 数据挖掘 API
解码客服工单系统:选型指南让您信手拈来
在选择客服工单系统时,企业应明确需求,考虑功能(如工单管理、知识库集成、自动化流程)、易用性、技术支持、可扩展性、安全性和合规性。ZohoDesk提供定制服务,满足企业效率提升和成本降低的需求。进行成本效益分析以确保投资回报。
28 6
|
5天前
|
监控 安全 机器人
电话客服热线系统的详细搭建方案(十大关键要素)
构建高效电话客服系统涉及需求分析、话务量估算、系统规划与设计、多渠道集成、智能化升级和安全措施。需求分析包括客户调查、数据分析、竞争分析和焦点小组讨论,以确定服务模型和规模。系统设计需选择合适的服务模型、技术工具,并设计呼叫流程。多渠道接入与在线客服可提升客户体验,智能化技术如智能语音和文字机器人则提高效率。技术实施涉及硬件和软件选择、系统集成、测试与调整。安全方面,要设计安全策略,实施安全技术,并持续监控。人员培训与管理确保团队能力,运营和优化则关注日常管理、系统优化和后期运维。部署方式包括云端和本地化,租用和自建,各有优劣。电话客服系统对提升客户满意度和企业形象至关重要。

热门文章

最新文章

http://www.vxiaotou.com