Skip to content

Commit e3765b7

Browse files
Implemented parsing of ROOM_DATA_BYTES (#228)
Unity clients can now receive data sent from the server using client.sendBytes.
1 parent 9636c04 commit e3765b7

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

Assets/Colyseus/Runtime/Colyseus/Room/ColyseusRoom.cs

+19-9
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ protected async void ParseMessage(byte[] bytes)
503503
{
504504
Patch(bytes, 1);
505505
}
506-
else if (code == ColyseusProtocol.ROOM_DATA)
506+
else if (code == ColyseusProtocol.ROOM_DATA || ColyseusProtocol.ROOM_DATA_BYTES)
507507
{
508508
IColyseusMessageHandler handler = null;
509509
object type;
@@ -523,14 +523,24 @@ protected async void ParseMessage(byte[] bytes)
523523

524524
if (handler != null)
525525
{
526-
//
527-
// MsgPack deserialization can be optimized:
528-
// https://github.com/deniszykov/msgpack-unity3d/issues/23
529-
//
530-
object message = bytes.Length > it.Offset
531-
? MsgPack.Deserialize(handler.Type,
532-
new MemoryStream(bytes, it.Offset, bytes.Length - it.Offset, false))
533-
: null;
526+
object message = null;
527+
528+
if ( code == ColyseusProtocol.ROOM_DATA )
529+
{
530+
//
531+
// MsgPack deserialization can be optimized:
532+
// https://github.com/deniszykov/msgpack-unity3d/issues/23
533+
//
534+
message = bytes.Length > it.Offset
535+
? MsgPack.Deserialize(handler.Type,
536+
new MemoryStream(bytes, it.Offset, bytes.Length - it.Offset, false))
537+
: null;
538+
}
539+
else if ( code == ColyseusProtocol.ROOM_DATA_BYTES )
540+
{
541+
message = new byte[bytes.Length - it.Offset];
542+
Buffer.BlockCopy(bytes, it.Offset, (byte[])message, 0, bytes.Length - it.Offset);
543+
}
534544

535545
handler.Invoke(message);
536546
}

0 commit comments

Comments
 (0)