TemplatedApp
Маршруты, listen, WebSocket behavior и pub/sub.
get()post()put()patch()del()options()head()any()ws()publish()numSubscribers()listen()listen_unix()filter()close()@swarmmachina/swm-uws v0.5.1
Node-API binding
Нативный V8 binding, совместимый с обычной non-TLS HTTP/WebSocket поверхностью uWebSockets.js. Исходники uWebSockets.js 20.69.0 закреплены и vendored в репозитории.
Выбирайте swm-uws для прямого App() API, миграции обычного uWebSockets.js-приложения или когда серверные абстракции swm-core не нужны.
npm install @swarmmachina/swm-uwsimport uWS from '@swarmmachina/swm-uws'
const app = uWS.App()
app.get('/', (res) => {
res.writeHeader('content-type', 'application/json')
.end('{"ok":true}')
})
app.ws('/ws', {
message(ws, message, isBinary) {
ws.send(message, isBinary)
}
})
app.listen(3000, (socket) => {
if (!socket) process.exit(1)
})| Среда | Статус | Примечание |
|---|---|---|
| Node.js 22 / 24 | Поддерживается | Prebuilds выпускаются для поддерживаемых ABI. |
| Linux x64 + glibc | Поддерживается | Portable generic x86-64 build. |
| Windows x64 | Поддерживается | Нативная сборка входит в пакет. |
| macOS arm64 / x64 | Поддерживается | Apple Silicon и Intel. |
| Windows ARM64 | Не поддерживается | Нет текущего prebuild. |
| Alpine / musl | Не поддерживается | Нужна glibc-среда. |
| TLS / permessage-deflate | Отключено | TLS завершается перед приложением. |
Маршруты, listen, WebSocket behavior и pub/sub.
get()post()put()patch()del()options()head()any()ws()publish()numSubscribers()listen()listen_unix()filter()close()Данные запроса, snapshot и потоковый ответ.
getMethod()getUrl()getHeader()getQuery()getParameter()forEach()snapshot()writeStatus()writeHeader()end()write()tryEnd()onWritable()onData()collectBody()onAborted()Сообщения, фрагменты, backpressure и темы.
send()sendFirstFragment()sendFragment()sendLastFragment()ping()publish()cork()end()close()getBufferedAmount()getRemoteAddress()getUserData()subscribe()unsubscribe()isSubscribed()getTopics()Полные сигнатуры, типы и примеры находятся в README и TypeScript declarations исходного репозитория.
Binding близок к нативному uWS, поэтому время жизни wrapper-объектов и буферов является частью API-контракта.
HttpRequest действителен только внутри route/upgrade callback. Перед асинхронной работой вызовите req.snapshot(paramCount).
onData и onDataV2 получают zero-copy ArrayBuffer, который отсоединяется после callback. Скопируйте chunk, если он нужен позже.
collectBody(maxSize, callback) возвращает принадлежащий приложению ArrayBuffer или null при превышении лимита.
Response остаётся валиден после route callback только при регистрации onData, onWritable, collectBody или onAborted.
Response и WebSocket wrappers уже недействительны внутри onAborted и close callback соответственно.
Если приложение использует поддерживаемую обычную App() поверхность, пакет можно установить под исходным именем. Для SSLApp, H3App, compression, SNI и экспериментальных API нужна явная миграция.
npm install uwebsockets.js@npm:@swarmmachina/swm-uws// Исходный import остаётся без изменений
import uWS from 'uwebsockets.js'