-
Notifications
You must be signed in to change notification settings - Fork 208
Release: ✨ Major Release 2.0.0 - ja4 -websocket -sse support [2.0.0] #387
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Co-Authored-By: makichigin <[email protected]>
This was referenced Aug 9, 2025
Closed
|
Hello!When I try to use WebSocket, it waits indefinitely. I'm not sure if it's an issue with my usage, but I found an issue where someone encountered the same problem. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
2.0.0 - (8-9-2025)
Release Highlights
This is a major release with breaking changes to the JavaScript/TypeScript API. Please review the migration guide below before upgrading.
New features include HTTP/3, WebSocket, Server-Sent Events, JA4 fingerprinting, and binary response support. Significant performance improvements through connection reuse and enhanced protocol support.
New Features
API Enhancements
New Protocols & Features
cycleTLS.ws(),cycletls.NewWebSocketClient())cycleTLS.sse(),cycletls.NewSSEClient())ForceHTTP3,QUICFingerprint)JA4field in options)JavaScript/TypeScript Changes
response.bodyremoved, useresponse.json(),response.text(),response.arrayBuffer(),response.blob()responseType: 'stream'for real-time data handlinginitCycleTLS({ port, timeout })configuration optionsGolang Enhancements (Backward Compatible)
EnableConnectionReusewith connection poolingBrowserstruct for all protocolsHTTP2FingerprintsupportNewHTTP3Transport()for advanced usageContributors & Acknowledgments
Special thanks to the following contributors for their significant contributions to v2.0.0:
ESRCHerrors onSIGINT/SIGTERM(fix: UncaughtESRCHonSIGINT/SIGTERM#370) and specifiedform-datadependency in package.json (fix: Specifyform-datadependency in package.json #367)Could not connect to the CycleTLS instance within 4000msfor certain cases) #339)HTTP/2 Fingerprinting
HTTP/2 fingerprinting allows you to mimic specific browser HTTP/2 implementations:
1:65536;2:0;4:131072;5:163841:65536;2:0;4:6291456;6:262144JA4 Fingerprinting (Enhanced)
JA4 is the successor to JA3, providing more detailed TLS fingerprinting:
t13d1717h2_5b57614c22b0_f2748d6cd58dt13d1517h2_8daaf6152771_7e51fdad25f2🚨 CRITICAL CHANGES (WILL BREAK YOUR CODE)
response.bodyresponse.json()/response.text()Content-TypeformData.getHeaders()📋 DETAILED BREAKING CHANGES
1.⚠️ Response Body Access (CRITICAL)
response.bodyaccess REMOVEDresponse.json(),response.text(),response.arrayBuffer(), orresponse.blob()methods2.⚠️ Form Data Headers (RECOMMENDED)
Content-Type: multipart/form-dataheaders DEPRECATEDformData.getHeaders()instead3.⚠️ Async Response Methods (BEHAVIORAL CHANGE)
awaitor.then()with response methods4. ✨ NEW API Methods (ADDITIONS - NON-BREAKING)
cycleTLS.ws(),cycleTLS.webSocket()for WebSocket connectionscycleTLS.sse(),cycleTLS.eventSource()for Server-Sent EventscycleTLS.get(),cycleTLS.post(), etc.🔄 Quick Migration Examples
✨ New Features - WebSocket & SSE
WebSocket Implementation
Server-Sent Events Implementation
Connection Reuse Performance Enhancement
Connection reuse significantly reduces TLS handshake overhead by maintaining persistent connections to the same host:
Streaming Support
✅ Golang: New Options (Backward Compatible)
🔄 MIGRATION GUIDE (v1.x → v2.0.0)
🚨 CRITICAL: This change affects ALL existing code
📝 Quick Fix Pattern:
🔧 ISSUE: Manual Content-Type headers break multipart boundaries
📝 Why This Matters:
Multipart form data requires unique boundaries. Manual headers miss this critical detail.
🛡️ PROTECTION: Response parsing can now fail
🔍 Common Errors to Handle:
✨ STEP 4: Explore New Features (OPTIONAL)
🎉 BONUS: Take advantage of new capabilities
🐛 Bug Fixes
ESRCHonSIGINT/SIGTERMsignals #370✅ What Remains Unchanged (Backward Compatible)
🎯 GOOD NEWS: These parts of your code don't need changes
cycleTLS(url, options, method)ja3,userAgent,proxy,timeout, etc.response.status,response.headers,response.finalUrlcycleTLS.exit(),initCycleTLS()📋 What This Means:
1.0.26 - (2-16-2024)
Release Highlights
Fix illegal parameter error and location url error
Enhancements
Bug Fixes