Yo @yannick … Got a question about the UDP packet order.
Since UDP packets are not guaranteed to be in order, and you can receive packet 5 before packet 4 for example… Does the geckos.io (socket.io like) api take that into account. when i do something like channel.on(‘chat message’)… Will they always be in order… Or can you still get out of order messages with geckos.io ?
How do you send message back to the client sender only… and not all the the other channels in the room ?
Thanks for the great work on geckos.io, btw
There seems to be an
options.ordered option for initializing the server
// emits a message to the channel
channel.emit('chat message', 'Hello to myself!')
// emits a message to all channels, in the same room
channel.room.emit('chat message', 'Hello everyone!')
// emits a message to all channels, in the same room, except sender
channel.broadcast.emit('chat message', 'Hello friends!')
// emits a message to all channels
io.emit('chat message', 'Hello everyone!')
Reference: GitHub - geckosio/geckos.io: 🦎 Real-time client/server communication over UDP using WebRTC and Node.js http://geckos.io
R there any drawback or performance issues with setting options.ordered = true ???
I’m not sure, but my guess is that
ordered may cause you to lose the non-blocking benefit of unreliable, unordered UDP
I think if you’re dealing with user-typed chat messages on top of multiplayer networking, unordered should be fine, since a typical user won’t send typed messages at sub-second frequency, so the chance that their chat messages are out of order is low
I was thinking about using ordered = true for adding snapshot packets from network to my interpolation buffer. But if that negates any SPEED benefits… I will stick to un ordered and try and INSERT my network packet into the interpolation buffer array based on a sequence number or something
Yo @yannick … is it possible to rebuild the geckos.io package with CommonJS ?
I cant get my servers to run at AWS… I guess its using a older node 14 (not sure the minor version)
and wont run on AWS Beanstalk Server
FYI @yannick … When trying to deploy my geckos.io app to AWS Elastic Beanstalk Environment.
It get a permission error when trying to install a package called node-datachannel
I gues the node-datachannel packge install is trying to access the resources on the machine like /root/.npm and ./root/.npm/_logs
So i cant deploy my geckos.io app in the cloud on AWS
No. Please use dynamic imports in a CJS project or switch to ESM.
I don’t know. But try
sudo chown R 900:900 "/root/.npm"
So… how do i get the UDP data channels to support sending binary data… like the result for snapshotModel.toBuffer
This is how i am generating worldState … using that to create a snapshot and converting that to binary array buffer… Then transmitting that binary packet either with geckos.io or colyeus.io
Found it… Raw Message… Looks like you cant specify a message type like with emit… Just the raw message itself… That kool… i can work with that
So i try to something like:
const packet:any = (data instanceof Buffer) ? UpdateModel.fromBuffer(data.buffer) : data;
But it get offset outside the bounds error
Have you ever used compression on the packet you send from the client to the nodejs server ?