@@ -405,6 +405,12 @@ describe('socket.io', function(){
405405 expect ( sio . emit ) . to . be . a ( 'function' ) ;
406406 expect ( sio . send ) . to . be . a ( 'function' ) ;
407407 expect ( sio . write ) . to . be . a ( 'function' ) ;
408+ expect ( sio . clients ) . to . be . a ( 'function' ) ;
409+ expect ( sio . compress ) . to . be . a ( 'function' ) ;
410+ expect ( sio . json ) . to . be ( sio ) ;
411+ expect ( sio . volatile ) . to . be ( sio ) ;
412+ expect ( sio . sockets . flags ) . to . eql ( { json : true , volatile : true } ) ;
413+ delete sio . sockets . flags ;
408414 } ) ;
409415
410416 it ( 'should automatically connect' , function ( done ) {
@@ -730,6 +736,87 @@ describe('socket.io', function(){
730736 } ) ;
731737 }
732738 } ) ;
739+
740+ it ( 'should not emit volatile event after regular event' , function ( done ) {
741+ var srv = http ( ) ;
742+ var sio = io ( srv ) ;
743+
744+ var counter = 0 ;
745+ srv . listen ( function ( ) {
746+ sio . of ( '/chat' ) . on ( 'connection' , function ( s ) {
747+ // Wait to make sure there are no packets being sent for opening the connection
748+ setTimeout ( function ( ) {
749+ sio . of ( '/chat' ) . emit ( 'ev' , 'data' ) ;
750+ sio . of ( '/chat' ) . volatile . emit ( 'ev' , 'data' ) ;
751+ } , 20 ) ;
752+ } ) ;
753+
754+ var socket = client ( srv , '/chat' ) ;
755+ socket . on ( 'ev' , function ( ) {
756+ counter ++ ;
757+ } ) ;
758+ } ) ;
759+
760+ setTimeout ( function ( ) {
761+ expect ( counter ) . to . be ( 1 ) ;
762+ done ( ) ;
763+ } , 200 ) ;
764+ } ) ;
765+
766+ it ( 'should emit volatile event' , function ( done ) {
767+ var srv = http ( ) ;
768+ var sio = io ( srv ) ;
769+
770+ var counter = 0 ;
771+ srv . listen ( function ( ) {
772+ sio . of ( '/chat' ) . on ( 'connection' , function ( s ) {
773+ // Wait to make sure there are no packets being sent for opening the connection
774+ setTimeout ( function ( ) {
775+ sio . of ( '/chat' ) . volatile . emit ( 'ev' , 'data' ) ;
776+ } , 20 ) ;
777+ } ) ;
778+
779+ var socket = client ( srv , '/chat' ) ;
780+ socket . on ( 'ev' , function ( ) {
781+ counter ++ ;
782+ } ) ;
783+ } ) ;
784+
785+ setTimeout ( function ( ) {
786+ expect ( counter ) . to . be ( 1 ) ;
787+ done ( ) ;
788+ } , 200 ) ;
789+ } ) ;
790+
791+ it ( 'should enable compression by default' , function ( done ) {
792+ var srv = http ( ) ;
793+ var sio = io ( srv ) ;
794+ srv . listen ( function ( ) {
795+ var socket = client ( srv , '/chat' ) ;
796+ sio . of ( '/chat' ) . on ( 'connection' , function ( s ) {
797+ s . conn . once ( 'packetCreate' , function ( packet ) {
798+ expect ( packet . options . compress ) . to . be ( true ) ;
799+ done ( ) ;
800+ } ) ;
801+ sio . of ( '/chat' ) . emit ( 'woot' , 'hi' ) ;
802+ } ) ;
803+ } ) ;
804+ } ) ;
805+
806+ it ( 'should disable compression' , function ( done ) {
807+ var srv = http ( ) ;
808+ var sio = io ( srv ) ;
809+ srv . listen ( function ( ) {
810+ var socket = client ( srv , '/chat' ) ;
811+ sio . of ( '/chat' ) . on ( 'connection' , function ( s ) {
812+ s . conn . once ( 'packetCreate' , function ( packet ) {
813+ expect ( packet . options . compress ) . to . be ( false ) ;
814+ done ( ) ;
815+ } ) ;
816+ sio . of ( '/chat' ) . compress ( false ) . emit ( 'woot' , 'hi' ) ;
817+ } ) ;
818+ } ) ;
819+ } ) ;
733820 } ) ;
734821
735822 describe ( 'socket' , function ( ) {
0 commit comments