使用 GoLang 和 WebAssembly 构建聊天服务(第 1 部分)

2025-06-10

使用 GoLang 和 WebAssembly 构建聊天服务(第 1 部分)

概念 1

首先我想解释一下什么是 Webassembly?

简单来说,把java-c#-python,....等语言编译运行到浏览器中我们称之为Webassembly。

JavaScript 一直是浏览器唯一能理解的编程语言。JavaScript 经受住了时间的考验,能够提供大多数 Web 应用程序所需的性能。然而,在 3D 游戏、VR、AR 和图像编辑应用方面,由于 JavaScript 是解释型语言,因此性能略显不足。尽管 Gecko 和 V8 等 JavaScript 引擎具备即时编译功能,但 JavaScript 仍无法提供现代 Web 应用程序所需的高性能。

WebAssembly(也称为 wasm)旨在解决这个问题。WebAssembly 是一种用于浏览器的虚拟汇编语言。我们所说的“虚拟”是指它无法在底层硬件上原生运行。由于浏览器可以在任何架构上运行,因此浏览器无法直接在底层硬件上运行 WebAssembly。但是,这种高度优化的虚拟汇编格式比原生 JavaScript 更容易被现代浏览器处理,因为它经过编译,并且比 JavaScript 更接近硬件架构。下图显示了 WebAssembly 与 JavaScript 在堆栈中的位置对比。它比 JavaScript 更接近硬件。

WebAssembly
现有的 JavaScript 引擎已经支持运行 WebAssembly 的虚拟汇编代码。

WebAssembly 并非旨在取代 JavaScript。它旨在与 JavaScript 协同工作,以处理 Web 应用程序的性能关键组件。JavaScript 和 WebAssembly 之间可以互相调用。

WebAssembly 通常不需要手工编写,而是从其他高级编程语言交叉编译而来。例如,可以将 Go、C、C++ 和 Rust 代码交叉编译到 WebAssembly。因此,已经用其他编程语言编写的模块可以交叉编译为 WebAssembly 并直接在浏览器中使用。

WebAssembly(WASM)的应用

WebAssembly 最初应该用在哪些地方?首先,是在浏览器中直接处理重型任务。

  • 游戏开发
  • 视频编辑/流媒体
  • 加密
  • 图像识别

概念 2


在第 2 部分中,我们将使用 golang 编写我们的第一个 WebAssembly 代码

鏂囩珷鏉ユ簮锛�https://dev.to/taherfattahi/build-a-chat-service-using-golang-and-webassemble-part-1-1pee
PREV
使用 lazygit 来偷懒
NEXT
Nevertheless, Tae'lur Alexis Coded Reflections on my journey into tech and goals for 2019