【无标题】好消息 突破:IM开源项目OpenIM采用wasm技术实现jssdk

这篇具有很好参考价值的文章主要介绍了【无标题】好消息 突破:IM开源项目OpenIM采用wasm技术实现jssdk。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenIM 客户端sdk用golang实现,同时采用sqlite存储本地聊天记录,通过gomobile生成sdk,供iOS Android 调用,达到了了一套代码多端复用的效果。最近融合wasm技术,让浏览器具备存储能力,本地聊天记录存储在浏览器,彻底放弃了之前jssdk server服务端。

WebAssembly 是一种运行在现代网络浏览器中的新型代码,并且提供新的性能特性和效果。它设计的目的不是为了手写代码而是为诸如 C、C++和 Rust 等低级源语言提供一个高效的编译目标。

对于网络平台而言,这具有巨大的意义——这为客户端 app 提供了一种在网络平台以接近本地速度的方式运行多种语言编写的代码的方式;在这之前,客户端 app 是不可能做到的。

而且,你在不知道如何编写 WebAssembly 代码的情况下就可以使用它。WebAssembly 的模块可以被导入的到一个网络 app(或 Node.js)中,并且暴露出供 JavaScript 使用的 WebAssembly 函数。JavaScript 框架不但可以使用 WebAssembly 获得巨大性能优势和新特性,而且还能使得各种功能保持对网络开发者的易用性。

webpack5+引入方式

1.获取npm包

  • npm包主页
  • npm install open-im-sdk-wasm

2.获取wasm所需静态资源

  • 在项目根目录下的node_modules目录下找到open-im-sdk-wasm子目录,将其中assets文件夹下的所有文件拷贝到项目公共资源目录中(public)。
  • 文件清单
  • openIM.wasm
    sql-wasm.wasmwasm_exec.js
  • 并在您的index.html文件中通过script标签引入wasm_exec.js文件

3.在你的项目中引入SDK

  • 引入SDK
  • import { getSDK } from "open-im-sdk-wasm";
    const OpenIM = getSDK();
    • 可能遇到的问题
    • 解决方案:在webpack配置中新增配置如下
    • resolve: {
      fallback: {path: false,
      crypto: false,
      },},openim 集成,开源,rust,开发语言,后端

     

vite或webpack4引入方式

第一、二步同上

3.在你的项目中引入SDK

  • 将npm包中的lib目录拷贝到项目中,如:src/utils/lib。
  • 修改lib/api/index.js文件中对web worker的引入方式。
    • Webpack4.x
    • + import IMWorker from 'worker-loader!./worker.js';
      - worker = new Worker(new URL('./worker.js', import.meta.url));
      + worker = new IMWorker();
    • vite
    • + import IMWorker from './worker?worker';
      - worker = new Worker(new URL('./worker.js', import.meta.url));
      + worker = new IMWorker();
  • 引入SDK
  • 路径为拷贝后放置lib的路径
  • import { getSDK } from "@/utils/lib";
    const OpenIM = getSDK();

4.引入loader(webpack4)

这一步仅适用于webpack4引入,webpack5或vite可忽略

  • 安装worker-loader和worker-plugin
  • npm install worker-loader worker-plugin -D
  • 在webpack中新增配置
  • const WorkerPlugin = require("worker-plugin");
    ...
    plugins: [new WorkerPlugin()]
    ...

常见问题

1.如何关闭wasm日志打印?

答:开发环境下为了调试可以打开wasm日志,可以在wasm_exec.js文件中找到console.log(outputBuf.substr(0, nl));取消注释

2.生产环境wasm包体过大?

答:生产环境建议启用gzip,wasm模块经压缩仅5Mb,且仅初次加载或有变动时才会进行全量加载。

3.我的开发环境对于以上引入方式都不适用?

答:目前官方仅提供几种常见编译工具的引入教程,若有使用其他编译工具的小伙伴可自行尝试引入,并欢迎向文档提供PR。

项目介绍

OpenIM继续领跑开源IM领域,在广大开发者的支持下,目前github star突破10k。在数据泄露、信息外泄、隐私滥用的时代,IM私有化部署需求旺盛。其中,政企协同办公对IM需求猛增,随着信息化技术的迭代升级以及信创产业加速落地和实践,协同办公软件的发展潜力将进一步被释放。“安全可控“逐步成为第一要素。对于社区交友领域,暴露出的隐私安全问题越来越多,私有化部署确保用户数据不泄露。

OpenIM从服务端到客户端SDK开源即时通讯(IM)整体解决方案,可以轻松替代第三方IM云服务,打造具备聊天、社交、办公功能的app,目前sdk包括uniapp flutter iOS Android jssdk等全端覆盖。openim 集成,开源,rust,开发语言,后端

 

github地址:
https://github.com/OpenIMSDK/Open-IM-Server

开发者中心:https://doc.rentsoft.cn/#/

OpenIM团队

开源一词最初是指开源软件(OSS)。开源软件是源代码可以任意获取的计算机软件,任何人都能查看、修改和分发他们认为合适的代码。

开源软件依托同行评审和社区生产,皆以分散、协作的方式开发。开源软件由社区开发,而非单个作者或公司,因此通常成本更低、更灵活,寿命比专有软件更长。开源已成为一种超越软件生产界限的运动和工作方式。开源运动旨在利用开源软件的价值和分散的生产模型,为其社区和行业的问题寻找新的解决方法

OpenIM邀请全球技术极客参与技术优化,让开发者轻松集成,让每一个应用都具备IM功能,同时考虑企业的接入成本、服务器资源以及最重要的数据安全性和私密性。

团队来自资深IM技术团队,我们致力于用开源技术创造服务价值,打造轻量级、高可用的IM架构,开发者只需简单调用 SDK,即可在应用内构建多种即时通讯及实时音视频互动场景。OpenIM优势:开源,安全,可靠,低成本。对于信息安全重视的电子政务,企业协同办公,OpenIM都是非常好的选择。

从公司成立之初就将“开源”作为核心战略来推进,开源充分体现了自由、平等、分享的互联网精神。文章来源地址https://www.toymoban.com/news/detail-720985.html

到了这里,关于【无标题】好消息 突破:IM开源项目OpenIM采用wasm技术实现jssdk的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IM服务集群与跨服务器消息路由策略

    在单机模式下,相对简单,认为所有的客户都在同一台服务器上,姑且认为1台服务器可以同时支持1万用户在线,在更多用户同时在线时,则需要集群来实现负载均衡。 集群的算法需要解决故障处理以及动态添加的问题,同时需要考虑如何在集群节点间路由数据。 这里使用一

    2024年03月21日
    浏览(35)
  • IM即时通讯-N-如何保证消息的可靠性展示

    客户端如何在推拉结合的模式下保证消息的可靠性展示? 原则: server拉取的消息一定是连续的 原则: 端侧记录的消息的连续段有两个作用: 1. 记录消息的连续性, 即起始中间没有断层, 2. 消息连续, 同时意味着消息是最新的,消息不是过期的。 同步协议过载(SyncGapOv

    2023年04月09日
    浏览(42)
  • 分布式websocket即时通信(IM)系统保证消息可靠性【第八期】

    b站上面本期视频版本,观看视频食用更佳!点击即可跳转,找不到视频可以直接搜索我 目前叫 呆呆呆呆梦 目前已经写的文章有。并且有对应视频版本。 git项目地址 【IM即时通信系统(企聊聊)】点击可跳转 sprinboot单体项目升级成springcloud项目 【第一期】 前端项目技术选型

    2024年01月22日
    浏览(60)
  • 开源即时通讯IM框架 MobileIMSDK v6.4 发布

    本次更新为次要版本更新,进行了若干优化(更新历史详见:码云 Release Notes、Github Release Notes)。MobileIMSDK 可能是市面上唯一同时支持  UDP + TCP + WebSocket  三种协议的同类开源IM框架。 MobileIMSDK 是一套专为移动端开发的原创IM通信层框架: 历经10年、久经考验; 超轻量级、

    2024年02月06日
    浏览(58)
  • 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门

    ►  相关链接: ① MobileIMSDK-Uniapp端的详细介绍 ② MobileIMSDK-Uniapp端的开发手册new(* 精编PDF版) 您需要对Uniapp和Vue开发有所了解: 1) Uniapp 官方入门教程 2) 可能是最好的 uniapp 入门教程 3) Uniapp 官方 Vue 快速入门教程 您需要对WebSocket技术有所了解: 1) 新手快速入门:

    2024年02月05日
    浏览(71)
  • 【无标题】jenkins消息模板(飞书)

    插件名称 作用 Rebuilder Rebuilder。 官方地址:https://plugins.jenkins.io/rebuild 安装方式:在Jenkins插件当中直接搜索即可安装。 功能说明:此插件可以直接重复上次构建,也可以用于查看一些参数比较复杂的构建时,上次构建所选的参数是什么。非常nice的一个插件。 AnsiColor。 官方

    2024年02月11日
    浏览(35)
  • 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v9.0版已发布

    MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持 UDP  、 TCP  、 WebSocket  三种协议,支持 iOS、Android、H5、标准Java平台 ,服务端基于Netty编写。 工程开源地址是: 1) Gitee码云地址:https://gitee.com/jackjiang/MobileIMSDK 2) Github托管地

    2024年02月15日
    浏览(37)
  • uniapp即时通讯源码/im聊天系统源码开源(app+h5+小程序+pc四端)

    IM即时通讯源码是现今互联网行业中成熟、稳定和高效的即时通讯解决方案之一,其源码可以提供给开发者进行二次开发和定制化,实现更加个性化的即时通讯功能。本文将围绕IM即时通讯源码进行深入探讨,包括其优势、应用场景以及二次开发和定制化等方面的内容。 源码

    2024年02月04日
    浏览(44)
  • 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v7.0版已发布

    MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持  UDP  、 TCP  、 WebSocket  三种协议,支持  iOS、Android、H5、标准Java、小程序、Uniapp ,服务端基于Netty编写。 工程开源地址是: 1) Gitee码云地址:https://gitee.com/jackjiang/MobileIMS

    2024年02月11日
    浏览(39)
  • 【无标题】python和Java 企业微信群发消息

    GitHub - LinuxSuRen/phoenix.webui.framework: 基于WebDriver的WebUI自动化测试框架 #! -*- coding: utf-8 -*- \\\"\\\"\\\" Author: ZhenYuSha Create type_time: 2020-2-24 Info: 定期向企业微信推送消息 \\\"\\\"\\\" import requests, json import datetime import time wx_url = \\\"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4baf3c3c-f3ea-4554-9a45-9fbbb2076269\\\"  

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包