UWAGA: Zakładam, że klient ma na myśli przeglądarkę. W innym przypadku, proszę wyjaśnić więcej szczegółów.
Socket.io nie obsługuje danych binarnych, głównie dlatego, że oferuje różne transporty, a wiele z nich ich nie obsługuje.
Jednak natywne strony internetowe obsługują bloki i tablice znaków.
Jeśli naprawdę chcesz korzystać z danych binarnych dla wydajności (co, zgadzam się, jest sposobem, aby przejść w twoim przypadku), myślę, że powinieneś rozważyć użycie websockets zamiast socket.io.
Zła:
- tylko ~ 55% użytkowników przeglądania stron internetowych za pomocą przeglądarki, która obsługuje WebSockets.
- Nie będziesz mieć oferty produktów socket.io, takich jak kanały, emitowanie i metody.
Dobre:
Web Sockets API jest bardzo proste.
Będzie to o wiele bardziej wydajne pamięci. Normalnie twoje normalne tablice są przenoszone, najpierw robiąc je ciągiem JSON, a następnie wysyłając je z powrotem. Oznacza to, że faktycznie wysyłasz ciąg znaków do swojej tablicy! Zamiast tego, wyślesz ilość bajtów, których możesz się spodziewać (w bardziej przewidywalny sposób, bez sprawdzania długości łańcuchów przed wysłaniem, ale w bardziej "protokole" - w razie potrzeby).
Jeśli zdecydujesz się korzystać z WS, można to sprawdzić: http://www.adobe.com/devnet/html5/articles/real-time-data-exchange-in-html5-with-websockets.html
Else można po prostu iść z JSON.
Prawdę mówiąc, jeśli nadal używasz JSON do obsługi socket.io i "universal", włącz także transport flash i wyłącz wolniejsze transporty, jeśli gra wymaga małego opóźnienia.
Zależy to od tego, jakiej biblioteki bibliotecznej/protokołu RPC używasz do wysyłania danych przez sieć. – millimoose