{"id":13520410,"url":"https://github.com/http4s/blaze","last_synced_at":"2025-05-15T03:05:44.026Z","repository":{"id":12985838,"uuid":"15664702","full_name":"http4s/blaze","owner":"http4s","description":"Blazing fast NIO microframework and Http Parser","archived":false,"fork":false,"pushed_at":"2025-05-08T13:22:45.000Z","size":7152,"stargazers_count":360,"open_issues_count":89,"forks_count":64,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-05-08T14:33:09.345Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/http4s.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-01-06T03:59:24.000Z","updated_at":"2025-04-24T06:13:54.000Z","dependencies_parsed_at":"2024-03-12T14:32:04.002Z","dependency_job_id":"4c10c2b1-2f8a-426f-99ca-86bd11ccf27d","html_url":"https://github.com/http4s/blaze","commit_stats":null,"previous_names":[],"tags_count":87,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http4s%2Fblaze","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http4s%2Fblaze/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http4s%2Fblaze/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/http4s%2Fblaze/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/http4s","download_url":"https://codeload.github.com/http4s/blaze/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T05:02:19.661Z","updated_at":"2025-05-15T03:05:44.008Z","avatar_url":"https://github.com/http4s.png","language":"Scala","readme":"blaze ![Continuous Integration](https://github.com/http4s/blaze/workflows/Continuous%20Integration/badge.svg) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.http4s/blaze-http_2.12/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.http4s/blaze-http_2.12)\n=====\n\nblaze is a Scala library for building asynchronous pipelines, with a\nfocus on network IO.  Blaze is the original server and client backend\nfor the [http4s][http4s] project.\n\n## Modules\n\nblaze was conceived as a standalone project, but has seen the most use\nthrough http4s.  This repository houses both the standalone modules\nand the http4s backend.\n\n### Standalone modules\n\nThese have minimal external dependencies.  They represent the original\nvision of the blaze project and are less functional in nature.\n\n* [`blaze-core`](./core): the core NIO library \n* [`blaze-http`](./blaze-http): HTTP codecs built on `blaze-core`.\n\n### http4s backend\n\nThese modules were housed in the [http4s][http4s] repository through\nv0.23.11.  They are now maintained alongside the blaze core.  These\nmodules depend on `http4s-core` and `blaze-http`.\n\n* [`http4s-blaze-core`](./blaze-core): common, functional code to in\n  support of the backends.  Most of this code is package private.\n* [`http4s-blaze-server`](./blaze-server): the original server backend\n  for http4s\n* [`http4s-blaze-client`](./blaze-client): the original client backend\n  for http4s\n\n## Features\n- Completely asynchronous, pull-based design\n- Type safe pipeline composition\n- NIO1 and NIO2 socket engines\n- SSL integration\n- HTTP/1.x and HTTP/2 codecs\n- Basic HTTP/1.x server and client\n- Basic HTTP/2 server\n\n#### blaze's goals are\n- Provides an IO framework to support the core http4s project\n- Speed is the first priority\n- Asynchronicity underpinned by Scala `Future`\n- Java NIO backend for fast/asynchronous network and file I/O\n- A framework for rapid development of fast, asynchronous pipelines using Scala\n\n#### What blaze is not\n- Purely functional. Functional is preferred except when in conflict with the first goal.\n\n## Asynchronous network I/O\nblaze was built with NIO2 features in mind. NIO2 offers a host of new features which are offered\nin a unified way. blaze offers TCP socket server support for both NIO1 and NIO2, depending on your preference. \nNIO1 tends to be the better performing technology for raw sockets.\n\n## Getting started\nFor a quick start, look in the examples project for some simple examples of HTTP, WebSocket, and a simple EchoServer.\n\n#### Important blaze behaviors\n* By default, read and write requests should be serialized either manually, or with a `SerializerStage`.\n\n#### Data flow\n\nUseful asynchronous processing is done through the construction of a pipeline. A pipeline is composed of individual\nstages that perform operations such as decoding/encoding, SSL encryption, buffering, etc. The pipeline is constructed\nin a type safe manner using the `PipelineBuilder` types.\n\nblaze is a pull-based framework as opposed to the reactor and actor models found in other systems. Therefore,\ndata flow is typically controlled by the tail of the pipeline. Data is written and requested using the `Future`\ntype found in the Scala standard library.\n\nblaze doesn't make any assumptions as to whether any stage is threadsafe, so as noted above, either manually\nensure a write is not performed before the previous write has completed and the same for reads, or use a \n`SerializerStage` or `Serializer` mixin to automatically sequence reads and writes for you.\n\n### Contributors\n[The Contributors](https://github.com/http4s/blaze/graphs/contributors?from=2013-01-01\u0026type=c), as calculated by GitHub.\nContributions and comments in the form of issues or pull requests are greatly appreciated.\n\n### Acknowledgments\nSeveral concepts are inspired by the [Jetty][jetty] and [Netty][netty]\nprojects.\n\n### Licence\nBlaze is licensed under the Apache 2 license. See the [LICENSE][license] file in the root project directory for more information.\n\n[http4s]: https://github.com/http4s/http4s\n[jetty]: http://www.eclipse.org/jetty/\n[license]: https://github.com/http4s/http4s/blob/main/LICENSE\n[netty]: http://netty.io/\n","funding_links":[],"categories":["Scala","网络编程","\u003ca name=\"Scala\"\u003e\u003c/a\u003eScala"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhttp4s%2Fblaze","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhttp4s%2Fblaze","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhttp4s%2Fblaze/lists"}