Skip to content

4 byte unicode seems to be counted as 2 bytesΒ #600

Closed
@freman

Description

You want to:

  • report a bug
  • request a feature

Current behaviour

var socket = io({ transports: ['polling'], forceBase64: true });
socket.emit('chat message', 'πŸŽ‰');

Counts the πŸŽ‰ as 2 bytes, but it's actually 4

which results in it sending 23:42["chat message","...."] over the wire

It should be sending25:42["chat message","...."] over the wire

Conversely when I send back 25:42["chat message","...."] the client disconnects

Steps to reproduce (if the current behaviour is a bug)

var socket = io({ transports: ['polling'], forceBase64: true });
socket.emit('chat message', 'πŸŽ‰');
socket.on('chat message', function (msg) {
    console.log(msg);
});

Expected behaviour

send and receive πŸŽ‰ over a polling connection

Setup

Other information (e.g. stacktraces, related issues, suggestions how to fix)

I'm using the googollee go-socket.io library in linux. You can put together an exact sample of what I have with (Assuming you have go installed)

go get github.com/googollee/go-socket.io
cd $GOPATH/src/github.com/googollee/go-socket.io/example
sed -i bak \
    -e 's/= io()/= io({ transports: ['polling'], forceBase64: true })/' \
    -e 's,/socket.io-1.3.7.js,//cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.dev.js,' assets/index.html
go run main.go

A chat will be started on localhost:5000 you can try sending unicode characters

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions