@@ -6835,14 +6835,31 @@ LibraryManager.library = {
68356835#if SOCKET_DEBUG
68366836 Module . print ( [ 'onmessage' , data . length , '|' , Array . prototype . slice . call ( data ) ] ) ;
68376837#endif
6838+ #if SOCKET_FORCED_MESSAGING
6839+ var i32View = new Uint32Array ( data . buffer ) ;
6840+ var start = 0 ;
6841+ while ( start < data . length ) {
6842+ var currLen = i32View [ start >> 2 ] ;
6843+ assert ( currLen > 0 ) ;
6844+ start += 4 ;
6845+ assert ( start + currLen <= data . length , [ data . length , start , currLen ] ) ; // must not receive fractured messages!
6846+ info . inQueue . push ( data . subarray ( start , start + currLen ) ) ;
6847+ #if SOCKET_DEBUG
6848+ Module . print ( [ 'onmessage message' , currLen , '|' , Array . prototype . slice . call ( data . subarray ( start , start + currLen ) ) ] ) ;
6849+ #endif
6850+ start += currLen ;
6851+ }
6852+ #else
68386853 info . inQueue . push ( data ) ;
6854+ #endif
68396855 }
68406856 function send ( data ) {
68416857 // TODO: if browser accepts views, can optimize this
68426858#if SOCKET_DEBUG
68436859 Module . print ( 'sender actually sending ' + Array . prototype . slice . call ( data ) ) ;
68446860#endif
6845- info . socket . send ( new Uint8Array ( data ) . buffer ) ;
6861+ // ok to use the underlying buffer, we created data and know that the buffer starts at the beginning
6862+ info . socket . send ( data . buffer ) ;
68466863 }
68476864 var outQueue = [ ] ;
68486865 var intervalling = false , interval ;
@@ -6865,7 +6882,15 @@ LibraryManager.library = {
68656882 }
68666883 }
68676884 info . sender = function ( data ) {
6868- outQueue . push ( data ) ;
6885+ #if SOCKET_FORCED_MESSAGING
6886+ var buffer = new Uint8Array ( data . length + 4 ) ;
6887+ var i32View = new Uint32Array ( buffer . buffer ) ;
6888+ i32View [ 0 ] = data . length ;
6889+ buffer . set ( data , 4 ) ;
6890+ outQueue . push ( buffer ) ;
6891+ #else
6892+ outQueue . push ( new Uint8Array ( data ) ) ;
6893+ #endif
68696894 trySend ( ) ;
68706895 } ;
68716896 return 0 ;
0 commit comments