@cocreate/socket-client

中文文档
2.0.1发布于 2026/11/06AGPL-3.0ES Module近 30 天下载 2492

A simple socket component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API.

原始使用文档
文档目录4 节
  1. Docs & Demo
  2. CDN
  3. NPM
  4. yarn

CoCreate-socket-client

A simple socket component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API. Take it for a spin in our playground!

minified gzip brotli GitHub latest release License Hiring

CoCreate-socket-client

Docs & Demo

For a complete guide and working demo refer to the doumentation

CDN

<script src="https://cdn.CoCreateJS.com/socket-client/latest/CoCreate-socket-client.min.js"></script>
<script src="https://cdn.CoCreateJS.com/socket-client/latest/CoCreate-socket-client.min.css"></script>

NPM

$ npm i @cocreate/socket-client

yarn

$ yarn install @cocreate/socket-client

Table of Contents

Usage

Messages use one envelope. The method selects the event or operation and the remaining properties contain its payload.

import socket from "@cocreate/socket-client";

const response = await socket.send({
    method: "notification",
    message: "The workspace was updated",
    broadcast: false,
    broadcastClient: true
});

The socket client automatically supplies connection metadata including clientId, frameId, socketId, organization_id, uuid, and timeStamp.

Message routing

  • clientId identifies the browser and is shared by its tabs, windows, and same-origin frames.
  • frameId identifies one socket-client runtime, such as a tab, window, or iframe.
  • socketId identifies an individual WebSocket instance. It is generated for each socket and is not shared through session storage.
  • broadcast controls server delivery. false targets the originating or selected client; true targets eligible clients in the organization.
  • broadcastClient controls whether a received server message is relayed to the browser's other same-origin contexts.
  • broadcastSender: false prevents the originating frame from firing normal method listeners for the response. The response still returns and resolves its UUID promise.

The socket server sends to one connected socket for each selected clientId. If one socket cannot be reached, it can try another socket belonging to that client. Browser-context distribution is then handled by socket-client when broadcastClient is enabled.

Browser-context delivery

Socket-client stores the complete relay payload in the localSocketMessages array of the shared system IndexedDB database. The messageQueue array uses the same internal database. Records retain organization_id for organization-scoped filtering, while application databases remain free of socket transport state. Socket-client writes only the record ID and organization ID to the localSocketMessage local-storage key, allowing other contexts to retrieve the message without being constrained by local-storage value limits.

The native storage event fires in the other same-origin contexts, not in the context that performed the write. The receiving contexts read the IndexedDB record and fire their local listeners. Each new relay also removes records older than five seconds.

Announcements

All updates to this library are documented in our CHANGELOG and releases. You may also subscribe to email for releases and breaking changes.

Roadmap

If you are interested in the future direction of this project, please take a look at our open issues and pull requests. We would love to hear your feedback.

About

CoCreate-socket-client is guided and supported by the CoCreate Developer Experience Team.

Please Email the Developer Experience Team here in case of any queries.

CoCreate-socket-client is maintained and funded by CoCreate. The names and logos for CoCreate are trademarks of CoCreate, LLC.

How to Contribute

We encourage contribution to our libraries (you might even score some nifty swag), please see our CONTRIBUTING guide for details.

We want this library to be community-driven, and CoCreate led. We need your help to realize this goal. To help make sure we are building the right things in the right order, we ask that you create issues and pull requests or merely upvote or comment on existing issues or pull requests.

We appreciate your continued support, thank you!

License

This software is dual-licensed under the GNU Affero General Public License version 3 (AGPLv3) and a commercial license.

  • Open Source Use: For open-source projects and non-commercial use, this software is available under the AGPLv3. The AGPLv3 allows you to freely use, modify, and distribute this software, provided that all modifications and derivative works are also licensed under the AGPLv3. For the full license text, see the LICENSE file.

  • Commercial Use: For-profit companies and individuals intending to use this software for commercial purposes must obtain a commercial license. The commercial license is available when you sign up for an API key on our website. This license permits proprietary use and modification of the software without the copyleft requirements of the AGPLv3. It is ideal for integrating this software into proprietary commercial products and applications.

If you have not purchased a commercial license and intend to use this software for commercial purposes, you are required to sign up for an API key on our website.

版本与发布记录

@cocreate/socket-client 共发布 316 个版本,首次发布于 2021/04/03;过去 12 个月发布了 10 个版本。

版本发布日期距今
2.0.1latest2026/11/064 天前
2.0.02026/11/037 天前
1.45.02026/10/2120 天前
1.43.02026/08/043 个月前
1.42.12026/08/013 个月前
1.42.02026/07/293 个月前

关于 @cocreate/socket-client 的常见问题

@cocreate/socket-client 是什么?

A simple socket component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API.

如何安装 @cocreate/socket-client?

在项目目录运行 npm install @cocreate/socket-client,或使用 pnpm add / yarn add / bun add。

@cocreate/socket-client 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cocreate__socket-client 是否存在。

@cocreate/socket-client 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cocreate/socket-client 可以商用吗?

@cocreate/socket-client 使用 AGPL-3.0 许可。最严格的 Copyleft:除分发外,通过网络向用户提供基于它的服务也需要开源对应源码。闭源 SaaS 使用前务必评估。以上为概括,不构成法律意见,请以许可原文为准。

@cocreate/socket-client 的下载量有多少?

根据 npm 官方下载统计,@cocreate/socket-client 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,492 次,日均约 83 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cocreate/socket-client 还在维护吗?

最新版本 2.0.1 发布于 2026/11/06(4 天前);至今共发布 316 个版本,其中过去 12 个月发布了 10 个;首次发布于 2021/04/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。