-
Notifications
You must be signed in to change notification settings - Fork 2k
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
[WIP] uWebSockets Integration #2367
[WIP] uWebSockets Integration #2367
Conversation
@timkendall: Thank you for submitting a pull request! Before we can merge it, you'll need to sign the Meteor Contributor Agreement here: https://contribute.meteor.com/ |
Neat! exactly what I was trying to build |
@orefalo ha I saw your issue in uWebSockets and thought so :) Would love your help on this if you have time. |
@timkendall Hello, could you please explain more about the graceful shutdown issue? |
Hey @alexhultman , yeah to elaborate I was seeing apollo-server/packages/apollo-server-uwebsockets/src/__tests__/uWebSocketsApollo.test.ts Line 56 in 5cb46e5
When I switched to using random free ports (like I'm using right now) the problem went away (i.e got that listen token successfully). Again, could just be something that I'm doing wrong ;) Super spicy work btw 👍 |
@timkendall What kind of speeds do you get with a simple hello world query? Tested your code on a hello world query on osx and got 8.5K req/sec. |
Looks like https://github.com/uNetworking/uWebSockets.js/releases/tag/v15.6.0 |
I didn't benchmark with apollo yet. But the core library is 50% faster than bare metal node.
It behaves particularly well under heavy load. |
@mattiasewers could you share your benchmark code, tks |
@orefalo This is no longer an issue with |
814a29b
to
56998e5
Compare
I've been looking at how to integrate apollo with uWebsocket.js, was there a technical reason this stalled out? |
@hayes not really, just got busy (upload support may be a little involved but we don't need to do that right away :) |
I looked a bit at what it would take to get subscription support (my use case) and that looks a bit more involved. There are a lot assumptions around having nodes request/connection objects in the ws transport package. I'm not sure if I'll have the time to figure out how to make that compatible. |
"I've been looking at how to integrate Apollo with uWebsocket.js, was there a technical reason this stalled out?" I personally dropped uWS, the author is way too arrogant and egocentric... rude would be a more appropriate term. |
That's discouraging to hear. It may not be worth it in this case. Mostly just exploring options at this point |
@orefalo I checked our email conversation and I find nothing but polite conversation from both ends. You stopped emailing me when I told you my hourly rate. Of course, you interpreted my disapproval of your idea as "rude". If you want to hire someone only to confirm your original idea, without any critical thinking, then hire an actor or diplomat. You can't expect everyone to agree with your direction just because you wave a couple of dollar bills around. That's called confirmation bias - you look for someone to agree with your idea rather than look for objective input to challenge your idea until the idea is either right or wrong, proven by evidence. Alright, take care. |
Any update on this? |
it's dead - if you want speed and scalability, switch to go and rust. you will get both without the arrogance. cheers |
Ah yes because a middle aged Rolex wearing narcissistic "I model, therefore I am" kind of man who cannot take a "no" is never at fault. You are mad because I turned down your idea and had a too high rate, and now you act like a 5-year-old who won't get the newest Transformers toy for Christmas. If I remember correctly you acted like an inflated overly proud alpha cat with stiff tail pointing straight up and thought you could just come and throw (way too little) money at me and have me automatically agree with anything. |
Good, |
Relations require chemistry and it's clear that we both dislike each other so let's just leave it at that. We don't need to be friends. |
I've done integration here |
This is the beginnings of a new integration with uWebSockets.js, a spicy new super-fast native HTTP framework replacement for Node.
I've gotten the basic functionality working but a few things still need to be tackled (and some things may be blocked by uWebSockets right now).
TODO
Request
objects before passing torunHttpQuery
(see Need getHeaders() uNetworking/uWebSockets.js#70)createGraphQLServerOptions
(have to be very careful with thereq
/res
objects given to us by uWebSockets so we may want to pass "fake" versions of them with basic data copied out)Apollo TODO:
Closes #2353