Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

example.js 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. var options = {
  2. hosts: {
  3. domain: 'hristo.jitsi.net',
  4. muc: 'conference.hristo.jitsi.net', // FIXME: use XEP-0030
  5. bridge: 'jitsi-videobridge.hristo.jitsi.net', // FIXME: use XEP-0030
  6. },
  7. bosh: '//hristo.jitsi.net/http-bind', // FIXME: use xep-0156 for that
  8. clientNode: 'http://jitsi.org/jitsimeet' // The name of client node advertised in XEP-0115 'c' stanza
  9. };
  10. var confOptions = {
  11. openSctp: true
  12. }
  13. /**
  14. * Handles local tracks.
  15. * @param tracks Array with JitsiTrack objects
  16. */
  17. function onLocalTracks(tracks)
  18. {
  19. localTracks = tracks;
  20. console.log(tracks);
  21. tracks[0].attach($("#localAudio"));
  22. tracks[1].attach($("#localVideo"));
  23. }
  24. /**
  25. * Handles remote tracks
  26. * @param track JitsiTrack object
  27. */
  28. function onRemoteTrack(track) {
  29. var participant = track.getParitcipantId();
  30. if(!remoteTracks[participant])
  31. remoteTracks[participant] = [];
  32. remoteTracks[participant].push(track);
  33. var id = participant + track.getType();
  34. if(track.getType() == "video") {
  35. $("body").append("<video autoplay='1' id='" + participant + "video' />");
  36. } else {
  37. $("body").append("<audio autoplay='1' id='" + participant + "audio' />");
  38. }
  39. track.attach($("#" + id));
  40. }
  41. /**
  42. * That function is executed when the conference is joined
  43. */
  44. function onConferenceJoined () {
  45. for(var i = 0; i < localTracks.length; i++)
  46. {
  47. localTracks[i].start();
  48. }
  49. }
  50. function onUserLeft(id) {
  51. if(!remoteTracks[id])
  52. return;
  53. var tracks = remoteTracks[id];
  54. for(var i = 0; i< tracks.length; i++)
  55. tracks[i].detach($("#" + id + tracks[i].getType()))
  56. }
  57. /**
  58. * That function is called when connection is established successfully
  59. */
  60. function onConnectionSuccess(){
  61. room = connection.initJitsiConference("conference1", confOptions);
  62. room.createLocalTracks().then(onLocalTracks);
  63. room.on(JitsiMeetJS.events.conference.TRACK_ADDED, onRemoteTrack);
  64. room.on(JitsiMeetJS.events.conference.TRACK_REMOVED, function () {
  65. console.debug("track removed!!!");
  66. });
  67. room.on(JitsiMeetJS.events.conference.CONFERENCE_JOINED, onConferenceJoined);
  68. room.on(JitsiMeetJS.events.conference.USER_JOINED, function(id){ remoteTracks[id] = [];});
  69. room.on(JitsiMeetJS.events.conference.USER_LEFT, onUserLeft);
  70. room.join();
  71. };
  72. /**
  73. * This function is called when the connection fail.
  74. */
  75. function onConnectionFailed(){console.error("Connection Failed!")};
  76. /**
  77. * This function is called when we disconnect.
  78. */
  79. function disconnect(){
  80. console.log("disconnect!");
  81. connection.removeEventListener(JitsiMeetJS.events.connection.CONNECTION_ESTABLISHED, onConnectionSuccess);
  82. connection.removeEventListener(JitsiMeetJS.events.connection.CONNECTION_FAILED, onConnectionFailed);
  83. connection.removeEventListener(JitsiMeetJS.events.connection.CONNECTION_DISCONNECTED, disconnect);
  84. }
  85. function unload() {
  86. // room.leave();
  87. connection.disconnect();
  88. }
  89. $(window).bind('beforeunload', unload);
  90. $(window).bind('unload', unload);
  91. JitsiMeetJS.init();
  92. var connection = new JitsiMeetJS.JitsiConnection(null, null, options);
  93. var room = null;
  94. var localTracks = [];
  95. var remoteTracks = {};
  96. connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_ESTABLISHED, onConnectionSuccess);
  97. connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_FAILED, onConnectionFailed);
  98. connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_DISCONNECTED, disconnect);
  99. connection.connect();