Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d9996f0

Browse files
author
Tony Kovanen
committed
Added tests for volatile
1 parent 24d06d7 commit d9996f0

File tree

1 file changed

+204
-2
lines changed

1 file changed

+204
-2
lines changed

test/socket.io.js

Lines changed: 204 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ describe('socket.io', function(){
447447
var c1 = client(srv, '/');
448448
var c2 = client(srv, '/abc');
449449
});
450-
450+
451451
it('should be equivalent for "" and "/" on client', function(done){
452452
var srv = http();
453453
var sio = io(srv);
@@ -456,7 +456,7 @@ describe('socket.io', function(){
456456
});
457457
var c1 = client(srv, '');
458458
});
459-
459+
460460
it('should work with `of` and many sockets', function(done){
461461
var srv = http();
462462
var sio = io(srv);
@@ -800,6 +800,208 @@ describe('socket.io', function(){
800800
});
801801
});
802802

803+
it('should not emit volatile event after regular event (polling)', function(done) {
804+
var srv = http();
805+
var sio = io(srv, { transports: ['polling'] });
806+
807+
var counter = 0;
808+
srv.listen(function(){
809+
sio.on('connection', function(s){
810+
s.emit('ev', 'data');
811+
s.volatile.emit('ev', 'data');
812+
});
813+
814+
var socket = client(srv, { transports: ['polling'] });
815+
socket.on('ev', function() {
816+
counter++;
817+
});
818+
});
819+
820+
setTimeout(function() {
821+
expect(counter).to.be(1);
822+
done();
823+
}, 200);
824+
});
825+
826+
it('should not emit volatile event after regular event (ws)', function(done) {
827+
var srv = http();
828+
var sio = io(srv, { transports: ['websocket'] });
829+
830+
var counter = 0;
831+
srv.listen(function(){
832+
sio.on('connection', function(s){
833+
s.emit('ev', 'data');
834+
s.volatile.emit('ev', 'data');
835+
});
836+
837+
var socket = client(srv, { transports: ['websocket'] });
838+
socket.on('ev', function() {
839+
counter++;
840+
});
841+
});
842+
843+
setTimeout(function() {
844+
expect(counter).to.be(1);
845+
done();
846+
}, 200);
847+
});
848+
849+
it('should emit volatile event (polling)', function(done) {
850+
var srv = http();
851+
var sio = io(srv, { transports: ['polling'] });
852+
853+
var counter = 0;
854+
srv.listen(function(){
855+
sio.on('connection', function(s){
856+
// Wait to make sure there are no packets being sent for opening the connection
857+
setTimeout(function() {
858+
s.volatile.emit('ev', 'data');
859+
}, 20);
860+
});
861+
862+
var socket = client(srv, { transports: ['polling'] });
863+
socket.on('ev', function() {
864+
counter++;
865+
});
866+
});
867+
868+
setTimeout(function() {
869+
expect(counter).to.be(1);
870+
done();
871+
}, 200);
872+
});
873+
874+
it('should emit volatile event (ws)', function(done) {
875+
var srv = http();
876+
var sio = io(srv, { transports: ['websocket'] });
877+
878+
var counter = 0;
879+
srv.listen(function(){
880+
sio.on('connection', function(s){
881+
// Wait to make sure there are no packets being sent for opening the connection
882+
setTimeout(function() {
883+
s.volatile.emit('ev', 'data');
884+
}, 20);
885+
});
886+
887+
var socket = client(srv, { transports: ['websocket'] });
888+
socket.on('ev', function() {
889+
counter++;
890+
});
891+
});
892+
893+
setTimeout(function() {
894+
expect(counter).to.be(1);
895+
done();
896+
}, 200);
897+
});
898+
899+
it('should emit only one consecutive volatile event (polling)', function(done) {
900+
var srv = http();
901+
var sio = io(srv, { transports: ['polling'] });
902+
903+
var counter = 0;
904+
srv.listen(function(){
905+
sio.on('connection', function(s){
906+
// Wait to make sure there are no packets being sent for opening the connection
907+
setTimeout(function() {
908+
s.volatile.emit('ev', 'data');
909+
s.volatile.emit('ev', 'data');
910+
}, 20);
911+
});
912+
913+
var socket = client(srv, { transports: ['polling'] });
914+
socket.on('ev', function() {
915+
counter++;
916+
});
917+
});
918+
919+
setTimeout(function() {
920+
expect(counter).to.be(1);
921+
done();
922+
}, 200);
923+
});
924+
925+
it('should emit only one consecutive volatile event (ws)', function(done) {
926+
var srv = http();
927+
var sio = io(srv, { transports: ['websocket'] });
928+
929+
var counter = 0;
930+
srv.listen(function(){
931+
sio.on('connection', function(s){
932+
// Wait to make sure there are no packets being sent for opening the connection
933+
setTimeout(function() {
934+
s.volatile.emit('ev', 'data');
935+
s.volatile.emit('ev', 'data');
936+
}, 20);
937+
});
938+
939+
var socket = client(srv, { transports: ['websocket'] });
940+
socket.on('ev', function() {
941+
counter++;
942+
});
943+
});
944+
945+
setTimeout(function() {
946+
expect(counter).to.be(1);
947+
done();
948+
}, 200);
949+
});
950+
951+
it('should emit regular events after trying a failed volatile event (polling)', function(done) {
952+
var srv = http();
953+
var sio = io(srv, { transports: ['polling'] });
954+
955+
var counter = 0;
956+
srv.listen(function(){
957+
sio.on('connection', function(s){
958+
// Wait to make sure there are no packets being sent for opening the connection
959+
setTimeout(function() {
960+
s.emit('ev', 'data');
961+
s.volatile.emit('ev', 'data');
962+
s.emit('ev', 'data');
963+
}, 20);
964+
});
965+
966+
var socket = client(srv, { transports: ['polling'] });
967+
socket.on('ev', function() {
968+
counter++;
969+
});
970+
});
971+
972+
setTimeout(function() {
973+
expect(counter).to.be(2);
974+
done();
975+
}, 200);
976+
});
977+
978+
it('should emit regular events after trying a failed volatile event (ws)', function(done) {
979+
var srv = http();
980+
var sio = io(srv, { transports: ['websocket'] });
981+
982+
var counter = 0;
983+
srv.listen(function(){
984+
sio.on('connection', function(s){
985+
// Wait to make sure there are no packets being sent for opening the connection
986+
setTimeout(function() {
987+
s.emit('ev', 'data');
988+
s.volatile.emit('ev', 'data');
989+
s.emit('ev', 'data');
990+
}, 20);
991+
});
992+
993+
var socket = client(srv, { transports: ['websocket'] });
994+
socket.on('ev', function() {
995+
counter++;
996+
});
997+
});
998+
999+
setTimeout(function() {
1000+
expect(counter).to.be(2);
1001+
done();
1002+
}, 200);
1003+
});
1004+
8031005
it('should emit message events through `send`', function(done){
8041006
var srv = http();
8051007
var sio = io(srv);

0 commit comments

Comments
 (0)