{"id":16489053,"url":"https://github.com/thundernet8/browser-thrift","last_synced_at":"2025-10-27T20:31:10.345Z","repository":{"id":79658301,"uuid":"95361184","full_name":"thundernet8/Browser-Thrift","owner":"thundernet8","description":"Thrift RPC data transport protocol re-implementation in TypeScript for browser side RPC client","archived":false,"fork":false,"pushed_at":"2017-07-07T07:07:39.000Z","size":291,"stargazers_count":8,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-12T12:45:45.432Z","etag":null,"topics":["rpc","thrift","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/thundernet8.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2017-06-25T13:24:42.000Z","updated_at":"2022-09-29T10:10:49.000Z","dependencies_parsed_at":"2023-04-06T03:54:59.893Z","dependency_job_id":null,"html_url":"https://github.com/thundernet8/Browser-Thrift","commit_stats":{"total_commits":15,"total_committers":3,"mean_commits":5.0,"dds":"0.33333333333333337","last_synced_commit":"6cc83e8c1e1326ddf767759864ba154dc3ed42cb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundernet8%2FBrowser-Thrift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundernet8%2FBrowser-Thrift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundernet8%2FBrowser-Thrift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thundernet8%2FBrowser-Thrift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thundernet8","download_url":"https://codeload.github.com/thundernet8/Browser-Thrift/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238553046,"owners_count":19491367,"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":["rpc","thrift","typescript"],"created_at":"2024-10-11T13:42:43.573Z","updated_at":"2025-10-27T20:31:04.937Z","avatar_url":"https://github.com/thundernet8.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[English Intro](./README.md)\n\n## Browser-Thrift\n\nThrift RPC data transport protocol re-implementation in TypeScript for browser side RPC client.\nThrift RPC数据传输协议TypeScript版重实现，用于浏览器端RPC客户端。\n\n并且带来了一些改进以解决官方Thrift 生成的适用于浏览器端代码上的问题：\n\n* 官方生成的JS文件，适用于浏览器端的使用了大量全局变量，没有模块导出，并不适合我们常规模块化开发时引入\n\n* 官方生成的Node JS，适用于Node客户端，由于大量使用了浏览器端不支持的net/http/Buffer模块，无法直接在浏览器端使用\n\n* 官方生成的JS文件，没有Call sequence支持，如果服务端响应时间不一，可能造成回调顺序错误，一个解决办法就是每次的RPC调用都重生成Service Client和Connection实例，但是我更希望特别是WebSocket的connection实例能够重用，即在一个WebSocket连接上发送多个RPC调用，避免频繁的TCP连接打开和关闭\n\n* 官方生成的JS文件，因为没有类型支持，对开发时静态检查和提示不便，因此本包代码全部用TypeScript编写\n\n另外对于RPC服务端，本代码完全兼容，因此仍然可以使用Thrift官方工具生成各种语言的服务端代码以实现RPC通信。\n\n## 如何使用\n\n我们推荐你通过 [thrift2ts](https://www.npmjs.com/package/thrift2ts) CLI工具搭配使用本包。 thrift2ts将帮助从原有的thrift文件生成改良的RPC客户端代码，TypeScript格式。\n\n访问 [Thrift2TS-Flow-Demo](https://github.com/thundernet8/Thrift2TS-Flow-Demo) 获取一份完整的演示。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthundernet8%2Fbrowser-thrift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthundernet8%2Fbrowser-thrift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthundernet8%2Fbrowser-thrift/lists"}