---
title: "使用方法"
canonical_url: "https://tiptap.zhcndoc.com/hocuspocus/server/usage"
---

# 使用方法

## 使用方法

有两种方式可以使用 hocuspocus。可以使用内置服务器，也可以与其它框架一起使用，例如与 [Express](https://tiptap.zhcndoc.com/hocuspocus/server/examples.md#express)。

自 v4 起，Hocuspocus 支持多个运行时：Node.js（使用 `ws` 或 `uWebSockets.js`）、Bun、Deno，以及 Cloudflare Workers。内置的 `Server` 类在 Node.js 上仍然像以前一样工作；对于其他运行时，请直接使用 `Hocuspocus`，并将任意 `WebSocketLike` 实例传递给 `handleConnection()`。需要 Node.js 22+。

### Hocuspocus Server

使用内置服务器时，请确保从 `@hocuspocus/server` 导入 `Server`。服务器配置请参考 [配置说明](https://tiptap.zhcndoc.com/hocuspocus/server/configuration.md)。内置服务器会启动一个 web 服务器和一个 websocket 服务器。

```js
import { Server } from "@hocuspocus/server";

const server = new Server({
  port: 1234,
});

server.listen();
```

你可以通过 web 服务器访问 hocuspocus 实例，并调用其[方法](https://tiptap.zhcndoc.com/hocuspocus/server/usage.md#methods)。

```js
// …

server.hocuspocus.getDocumentsCount();
```

#### 停止服务器

调用 `server.destroy()` 可干净地关闭服务器——例如在 `SIGINT` / `SIGTERM` 处理程序中、测试中，或开发期间热重载时。

```js
server.destroy();
```

### Hocuspocus

如前所述，你也可以在不使用内置服务器的情况下使用 hocuspocus。请确保从 `@hocuspocus/server` 包中导入 `Hocuspocus`。

```js
import { Hocuspocus } from "@hocuspocus/server";

// 配置 hocuspocus
const hocuspocus = new Hocuspocus({
  name: "hocuspocus-fra1-01",
})

// …
```

请查看[示例](https://tiptap.zhcndoc.com/hocuspocus/server/examples.md)以了解更多内容。

## 方法

### Server

| 方法                       | 描述     |
| ------------------------ | ------ |
| `listen(port, callback)` | 启动服务器。 |
| `destroy()`              | 停止服务器。 |

### Hocuspocus

| 方法                                             | 描述               |
| ---------------------------------------------- | ---------------- |
| `configure(configuration)`                     | 传入自定义配置。         |
| `handleConnection(incoming, request, context)` | 绑定服务器到现有的服务器实例。  |
| `getDocumentsCount()`                          | 获取活跃文档的总数。       |
| `getConnectionsCount()`                        | 获取活跃连接的总数。       |
| `closeConnections(documentName?)`              | 关闭所有连接，或指定文档的连接。 |
| `openDirectConnection(documentName, context)`  | 创建与文档的本地连接。      |
