Twitter/X 使用 WebSocket 吗?开发者技术指南

关于 Twitter 流式协议的技术真相,为何对实时应用重要,以及 WebSocket 推送的对比。

3 天试用,之后 $199/月 · 5 个监控账号 · 1 个 WebSocket

发布于 2026年3月23日 · 更新于 2026年9月30日 · 阅读约 6 分钟 · TweetStream 团队

简短回答:不,Twitter 不使用 WebSocket

官方 X(Twitter)API 的流式端点不使用 WebSocket。而是使用 HTTP 流式传输 — 一种长连接 HTTP 请求,服务器通过分块传输编码逐步发送数据。这与 WebSocket(RFC 6455)是根本不同的协议。

这个区别对构建实时应用的开发者很重要。你使用的协议会影响延迟、重连行为、双向通信以及客户端代码架构。

Twitter 的 HTTP 流式传输如何工作

连接到 X API 的过滤流端点(GET /2/tweets/search/stream)时,客户端发起标准 HTTP 请求。服务器响应 200 状态码并开始逐行写入 JSON — 每条推文一行,无限持续。可以理解为下载一个无限长的文件。

在推文之间,X 大约每 20 秒发送保活信号(空行)。如果客户端超过 20 秒未收到数据,应假定连接中断并重新连接。

  • 协议:HTTP/1.1 分块传输编码
  • 数据格式:换行分隔的 JSON(NDJSON)
  • 方向:仅服务器到客户端(单向)
  • 保活:约每 20 秒一个空行
  • 认证:HTTP Authorization 头中的 Bearer token
  • 连接:一个长连接 HTTP 响应,永不关闭(直到错误或断开)

WebSocket 与 HTTP 流式传输的区别

WebSocket(RFC 6455)是一个独立协议,以 HTTP 升级请求开始,然后切换为帧化的双向通信通道。与 HTTP 流式传输不同,WebSocket 在同一连接上支持服务器到客户端和客户端到服务器的消息。

特性HTTP 流式传输(X API)WebSocket(RFC 6455)
初始握手标准 HTTP 请求HTTP 升级 → ws:// 协议切换
方向仅服务器 → 客户端双向
数据帧换行分隔的块带长度头的二进制/文本帧
保活空行(约 20 秒)Ping/Pong 帧(协议内置)
客户端可发送数据否(需新 HTTP 请求)是(同一连接)
断连检测基于超时(手动)关闭帧 + ping/pong(自动)
浏览器支持需要 ReadableStream API原生 WebSocket API
重连需手动实现由应用负责:连接关闭后按退避策略重连

为什么这对实时应用很重要

对于交易机器人和提醒系统,协议选择有实际影响:

  • 延迟:两种协议原始延迟相似,区别在于开销。WebSocket 每帧增加 2 至 14 字节,而 HTTP 分块编码的开销是可变的。
  • 重连:HTTP 流式传输没有内置机制检测中断连接,需要自己实现超时逻辑。WebSocket 的 ping/pong 帧可以发现失效连接,但连接关闭后仍由你的应用按退避策略重连。
  • 双向:使用 HTTP 流式传输时,订阅新账号或更改过滤条件需要单独的 HTTP 请求。使用 WebSocket,你可以在同一连接上发送订阅变更。
  • 浏览器兼容性:HTTP 流式传输需要 ReadableStream API 进行增量解析。WebSocket 有原生浏览器支持和更简单的 API。
  • 基础设施:HTTP 流式连接可能被期望标准请求/响应模式的代理、负载均衡器和 CDN 中断。WebSocket 连接专为长连接设计。

代码对比:HTTP 流式传输 vs WebSocket

// HTTP streaming — X API filtered stream
const needle = require('needle');
 
const STREAM_URL = 'https://api.x.com/2/tweets/search/stream';
 
function connect() {
  const stream = needle.get(STREAM_URL, {
    headers: { Authorization: `Bearer ${BEARER_TOKEN}` },
  });
 
  // Must parse incrementally — standard fetch() won't work
  stream.on('data', (chunk) => {
    const line = chunk.toString().trim();
    if (!line) return; // Keep-alive newline
    const tweet = JSON.parse(line);
    console.log(tweet.data.text);
  });
 
  // No built-in reconnect — you must handle this yourself
  stream.on('error', () => {
    console.error('Connection lost, reconnecting...');
    setTimeout(connect, 5000);
  });
}
 
connect();
// WebSocket — TweetStream (from $199/mo)
function connect() {
  const ws = new WebSocket('wss://ws-global.tweetstream.io/ws', [
    'tweetstream.v1',
    `tweetstream.auth.token.${API_KEY}`,
  ]);
 
  ws.onmessage = (event) => {
    const envelope = JSON.parse(event.data);
    if (envelope.t === 'tweet' && envelope.op === 'content') {
      console.log(envelope.d.text);
      // Enrichment data (tokens, OCR, prices) in meta messages
    }
  };
 
  // Reconnect in application code when the socket closes
  ws.onclose = () => {
    console.log('Reconnecting...');
    setTimeout(connect, 1000);
  };
}
 
connect();

面向交易机器人的 X 过滤流与 WebSocket 数据流对比

X 过滤流通过一条长连接 HTTP 响应推送符合你所写规则的帖子,按量付费方案按每次 Post 读取计费。TweetStream 通过 WebSocket 推送你所跟踪 X 账号的帖子,按固定月费计价,并为每条帖子附加富化数据。下表依据 X 公开文档(2026-09-30 核对),对比交易机器人依赖的几个方面。

对比项X 过滤流(按量付费)TweetStream WebSocket 数据流
连接方式一条长连接 HTTP 响应,内容为按行分隔的 JSON;按量付费方案只允许 1 个连接WebSocket,JSON 信封格式;Minimum 含 3 个连接,Pro 含 10 个
如何选择账号用 from:username 等运算符编写规则;按量付费方案最多 1,000 条规则,每条不超过 1,024 个字符在控制台、Discord 机器人或账号 API 中添加 X 账号,上限由套餐决定
重连与补数20 秒内没有收到数据或保活信号就重连;补发和恢复错过的帖子需要 Enterprise 权限连接关闭后按退避策略重连;Pro、Scale 和 Ultra Speed 可通过 History API 取回错过的帖子
计费方式每次 Post 读取 $0.005,每个计费周期最多 300 万次 Post 读取固定月费:Minimum $199/月含 50 个账号,Pro $499/月含 250 个账号
富化数据你请求的帖子字段和扩展字段OCR 文本、检测到的代币和合约、代币价格和预测市场上下文,通过后续 meta 信封发送

Twitter WebSocket API 页面介绍了载荷格式和接入步骤。

WebSocket 服务作为 Twitter 流式替代方案

多个第三方服务通过真正的 WebSocket 连接中继 Twitter 数据,弥合了 Twitter HTTP 流式传输与大多数实时应用偏好的 WebSocket 协议之间的差距。

例如 TweetStream 通过标准 WebSocket 连接将受监控的 X/Twitter 提醒推送到你的应用。这让你使用熟悉的 WebSocket API(onopen、onmessage、onclose)加上 OCR、代币检测和实时价格等富化数据。

  • 标准 WebSocket API — 无需 HTTP 流式传输解析
  • 自动重连与消息缓冲
  • 滚动服务端检测,富化信息随后补充
  • 起步 $199/月
  • 双向:在同一连接上订阅账号和更改过滤条件

更快把这个工作流投入生产

这篇文章介绍了这类工作流。TweetStream 负责受监控帖子的接入、代币检测和 OCR,并通过 WebSocket 投递帖子、更新、删除、置顶、资料变化、关注、取消关注和富化 JSON 载荷。支持的套餐还提供历史回放。你的客户端负责按文档重连 WebSocket,并把收到的事件路由到下游。你可以用自己的账号开始 3 天试用。

开始 3 天试用

常见问题

Twitter 内部使用 WebSocket 吗?
Twitter 的实时功能(如浏览器中的实时推文更新)可能使用各种内部协议,但公共开发者 API 完全使用 HTTP 流式传输,而非 WebSocket。
我可以用 WebSocket 客户端连接 Twitter API 吗?
不可以。X API 的流式端点只接受标准 HTTP 连接。你不能使用 WebSocket 客户端(如浏览器的 WebSocket API)直接连接 X API。
HTTP 流式传输比 WebSocket 慢吗?
原始延迟相似。实际区别在于开销、重连处理和开发者体验。WebSocket 每条消息开销更低且有内置保活,而 HTTP 流式传输需要手动超时检测。
为什么 Twitter 不提供 WebSocket API?
Twitter 的流式 API 早于 WebSocket 的广泛采用,设计用于服务器对服务器的场景。过滤流端点尚未更新以支持 WebSocket。
通过 WebSocket 获取 Twitter 数据最便宜的方式是什么?
如果你明确需要 WebSocket 交付,直接对比托管服务提供商会更可靠。TweetStream 的监控账号 WebSocket 提醒起步价为 $199/月,而官方 X API 使用的是 HTTP 流式传输而非 WebSocket。

用你自己的监控列表测试

添加最多 5 个你交易时关注的账号,连接一个 WebSocket,再把提醒与你现在看到的信息对比。

3 天试用,之后 $199/月 · 5 个监控账号 · 1 个 WebSocket