Comments (4)
Thanks for responding with the solution 😃. Helpful for other users.
Anyway, I will try to improve message-io
documentation to avoid this issue for the next person.
Regards
from message-io.
Hi @lokimckay,
First of all, thanks for your great explanation and reproduction steps 😃
WebSocket can support two kinds of message data formats: binary and text. Since message-io
handle the input/output data as binary, the WS adaptor used is only implemented for binary mode. The extension you're using sends data to the server in text mode, and message-io
drops the message.
I tested allowing message-io to understand the Text message, but because the WS adaptor always sends in binary mode, the extension, in this case, is who drops the binary message.
I hope your real case can support binary messages. Adding the text format support to message-io could be possible, but there is some decision points as "how to send a WS message specifying the format in a generic send()
of the message-io
interface" that must be evaluated before.
from message-io.
Thanks for the great project and explanation @lemunozm 😄
Do you know if it is possible for the browser implementation of Websocket to send as binary data? (as you say is required?) I find it hard to determine this from their docs
I created a minimal reproduction repo using a simple index.html
file and Javascript instead of the third-party chrome extension - but I still see the same behaviour that I reported in my issue
Can you tell me if I am still trying to send the messages as text?
https://github.com/lokimckay-references/message-io-122
from message-io.
Woops, answered my own question 🤦
I didn't understand that the javascript was literally sending a string
to the Rust websocket, and it needed to instead send a byte array (like you said)
Fix: lokimckay-references/message-io-122@10897f7
Copy+paste of the diff:
function onConnectButtonClick() {
+ ws.addEventListener("message", onMessageReceived);
}
function onSendMessageButtonClick() {
console.log('Sending "Hello there!"');
- ws.send("Hello there!");
+ ws.send(stringToByteArray("Hello there!"));
+}
+function stringToByteArray(str) {
+ const bytes = new Uint8Array(str.length);
+ for (let i = 0; i < str.length; i++) {
+ bytes[i] = str.charCodeAt(i);
+ }
+ return bytes;
+}
+async function onMessageReceived(event) {
+ const message = await event.data.text();
+ console.log("Received:", message);
+}
Behaves as expected 🎉
Will close the issue now, thanks for your help 😄
from message-io.
Related Issues (20)
- Disconnecting badly acting client (endpoint) HOT 2
- Cancelling timed messages fails sometimes HOT 3
- Release 0.14.8
- Unable to connect with FramedTcp HOT 1
- Release v0.15.0 HOT 8
- Add support for Bevy ECS HOT 3
- Error compiling with only tcp feature enabled HOT 3
- Release 0.16.0 HOT 2
- Buymeacoffee badge is misspelled ("bymeacoffee") HOT 1
- ws can not receive text HOT 10
- Is it possible to limit max packet size when using FramedTcp transport? HOT 1
- Is it possible to create an UART adapter? HOT 3
- Not compiling on linux (ubuntu 22.04) HOT 2
- Scaling of a application HOT 6
- is there any possibility for multiple thread mio eventloop? HOT 1
- Feature Request: Accept WebSocket URLs with parameters. HOT 3
- client don't try reconnect HOT 2
- Code very similar to the example does not work HOT 6
- Trait implementation of adapters that cannot accept a socket address? HOT 3
- Build error with Tungstenite 0.22.0+ HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from message-io.