modified lib-jitsi-meet dev repo
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

example.js 4.5KB

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