Skip to content
This repository has been archived by the owner on Dec 2, 2023. It is now read-only.

Commit

Permalink
(fix) update example; broadcast
Browse files Browse the repository at this point in the history
  • Loading branch information
adwpc committed Nov 23, 2021
1 parent c12c7d8 commit 6fc0e09
Show file tree
Hide file tree
Showing 6 changed files with 559 additions and 41 deletions.
7 changes: 6 additions & 1 deletion apps/room/server/room.go
Original file line number Diff line number Diff line change
Expand Up @@ -317,11 +317,15 @@ func (r *Room) count() int {
return len(r.peers)
}

func (r *Room) broadcastRoomEvent(event *room.Reply) {
func (r *Room) broadcastRoomEvent(uid string, event *room.Reply) {
log.Infof("event=%+v", event)
peers := r.getPeers()
r.update = time.Now()
for _, p := range peers {
if p.UID() == uid {
continue
}

if err := p.send(event); err != nil {
log.Errorf("send data to peer(%s) error: %v", p.info.Uid, err)
}
Expand Down Expand Up @@ -352,6 +356,7 @@ func (r *Room) sendMessage(msg *room.Message) {
log.Debugf("Room.onMessage %v => %v, type: %v, data: %v", from, to, dtype, data)
if to == "all" {
r.broadcastRoomEvent(
from,
&room.Reply{
Payload: &room.Reply_Message{
Message: msg,
Expand Down
3 changes: 2 additions & 1 deletion apps/room/server/room_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ func (s *RoomService) UpdateRoom(ctx context.Context, in *room.UpdateRoomRequest
}

// broadcast to others
r.broadcastRoomEvent(event)
r.broadcastRoomEvent("", event)
log.Infof("update room ok sid=%v", info.Sid)
return &room.UpdateRoomReply{Success: true}, nil
}
Expand Down Expand Up @@ -194,6 +194,7 @@ func (s *RoomService) EndRoom(ctx context.Context, in *room.EndRoomRequest) (*ro
}

r.broadcastRoomEvent(
"",
&room.Reply{
Payload: &room.Reply_Disconnect{
Disconnect: event,
Expand Down
46 changes: 23 additions & 23 deletions examples/echotest/index.html → examples/ion-echo/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -44,28 +44,30 @@
}
</style>

<title>Pion ion-sfu | Echotest</title>
<title>Pion ion | Echotest</title>
</head>

<body>
<nav class="navbar navbar-light bg-light border-bottom">
<h3>Pion</h3>
</nav>
<div class="container pt-4">
<div class="row" id="start-btns">
<div class="row" id="buttons">
<div class="col-12">
<button type="button" class="btn btn-primary" onclick="start(false)">
start
</button>
<button type="button" class="btn btn-primary" onclick="start(true)">
start with simulcast
</button>
<button type="button" class="btn btn-primary" onclick="joinRoom()">
joinRoom
</button>
<button type="button" class="btn btn-primary" onclick="leaveRoom()">
leaveRoom
</button>
<div class="btn-group" role="group" aria-label="...">
<button id="join-btn" type="button" class="btn btn-primary" onclick="join()">
join
</button>
<button id="publish-btn" type="button" class="btn btn-primary" onclick="start(false)" disabled=true>
publish
</button>
<button id="publish-simulcast-btn" type="button" class="btn btn-primary" onclick="start(true)" disabled=true>
publish(simulcast)
</button>
<button id="leave-btn" type="button" class="btn btn-primary" onclick="leave()" disabled=true>
leave
</button>
</div>
</div>
</div>

Expand Down Expand Up @@ -273,8 +275,8 @@ <h3>Pion</h3>
class="d-block border"
style="
background-color: #f8f9fa;
height: 117px;
width: 320px;
height: 120px;
width: 400px;
margin: 5px 0;
"
></pre>
Expand All @@ -291,8 +293,8 @@ <h3>Pion</h3>
class="d-block border"
style="
background-color: #f8f9fa;
height: 117px;
width: 320px;
height: 200px;
width: 400px;
margin: 5px 0;
padding: 5px;
"
Expand All @@ -308,8 +310,8 @@ <h3>Pion</h3>
class="d-block border"
style="
background-color: #f8f9fa;
height: 117px;
width: 320px;
height: 200px;
width: 400px;
margin: 5px 0;
"
></pre>
Expand All @@ -333,9 +335,7 @@ <h3>Pion</h3>
integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV"
crossorigin="anonymous"
></script>
<script src="https://unpkg.com/ion-sdk-js@1.8.0/dist/ion-sdk.min.js"></script>
<script src="https://unpkg.com/ion-sdk-js@1.8.0/dist/ion-connector.min.js"></script>
<!-- <script src="build/bundle.js"></script> -->
<script src="https://unpkg.com/ion-sdk-js@1.8.1/dist/ion-connector.min.js"></script>
<script src="./main.js"></script>
</body>
</html>
52 changes: 36 additions & 16 deletions examples/echotest/main.js → examples/ion-echo/main.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
const joinBtn = document.getElementById("join-btn");
const leaveBtn = document.getElementById("leave-btn");
const publishBtn = document.getElementById("publish-btn");
const publishSBtn = document.getElementById("publish-simulcast-btn");

const localVideo = document.getElementById("local-video");
const remoteVideo = document.getElementById("remote-video");
const localData = document.getElementById("local-data");
Expand All @@ -6,16 +11,17 @@ const sizeTag = document.getElementById("size-tag");
const brTag = document.getElementById("br-tag");
const codecBox = document.getElementById("select-box1");
const resolutionBox = document.getElementById("select-box2");

let simulcast = false;
let localDataChannel;

let url = 'http://localhost:5551';
let sid = 'ion';
let uid = "echo-example";

let uid = "local-user";
let connector;
let room;
const joinRoom = async () => {
console.log("[joinRoom]: sid="+sid+" uid=", uid)
const join = async () => {
console.log("[join]: sid="+sid+" uid=", uid)
const connector = new Ion.Connector(url, "token");

connector.onopen = function (service){
Expand All @@ -26,7 +32,6 @@ const joinRoom = async () => {
console.log('[onclose]: service = ' + service.name);
};


room = new Ion.Room(connector);

room.onjoin = function (result){
Expand Down Expand Up @@ -75,7 +80,6 @@ const joinRoom = async () => {
console.log('[ondisconnect]: Disconnected from server ' + dis);
};

//room.connect();
const result = await room.join({
sid: sid,
uid: uid,
Expand All @@ -89,7 +93,12 @@ const joinRoom = async () => {
vendor: 'string',
}, '')
.then((result) => {
console.log('[joinRoom] result: success ' + result?.success + ', room info: ' + JSON.stringify(result?.room));
console.log('[join] result: success ' + result?.success + ', room info: ' + JSON.stringify(result?.room));
joinBtn.disabled = "true";
remoteData.innerHTML = remoteData.innerHTML + JSON.stringify(result) + '\n';
leaveBtn.removeAttribute('disabled');
publishBtn.removeAttribute('disabled');
publishSBtn.removeAttribute('disabled');
});


Expand All @@ -104,14 +113,19 @@ const sendMsg = () => {
}
const payload = new Map();
payload.set('msg', localData.value);
console.log("[sendMsg]: sid=", sid, "from=", 'sender', "to=", uid, "payload=", payload);
room.message(sid,'sender', uid, 'Map', payload);
console.log("[sendMsg]: sid=", sid, "from=", uid, "to=", "all", "payload=", payload);
room.message(sid, "sender", "all", 'Map', payload);
}


const leaveRoom = () => {
console.log("[leaveRoom]: sid="+sid+" uid=", uid)
const leave = () => {
console.log("[leave]: sid=" + sid + " uid=", uid)
room.leave(sid, uid);
joinBtn.removeAttribute('disabled');
leaveBtn.disabled = "true";
publishBtn.disabled = "true";
publishSBtn.disabled = "true";
location.reload();
}

remoteVideo.addEventListener("loadedmetadata", function () {
Expand All @@ -122,8 +136,7 @@ remoteVideo.onresize = function () {
sizeTag.innerHTML = `${remoteVideo.videoWidth}x${remoteVideo.videoHeight}`;
};

/* eslint-env browser */
const joinBtns = document.getElementById("start-btns");


const local = new Ion.Connector(url);
const remote = new Ion.Connector(url);
Expand All @@ -138,12 +151,15 @@ local.onclose = function (service, err) {

const localRTC = new Ion.RTC(local);
const remoteRTC = new Ion.RTC(remote);
let trackEvent;

localRTC.join(sid, uid);

remoteRTC.ontrackevent = function (ev) {
console.log("[ontrackevent]: \nuid = ", ev.uid, " \nstate = ", ev.state, ", \ntracks = ", JSON.stringify(ev.tracks));
event = ev;
if (!trackEvent) {
trackEvent = ev;
}
remoteData.innerHTML = remoteData.innerHTML + JSON.stringify(ev) + '\n';
};

Expand All @@ -154,11 +170,15 @@ remoteRTC.ondatachannel = ({ channel }) => {
};
};

remoteRTC.join(sid, "echo-remote");
remoteRTC.join(sid, "remote-user");

let localStream;
const start = (sc) => {
simulcast = sc;

publishSBtn.disabled = "true";
publishBtn.disabled = "true";

Ion.LocalStream.getUserMedia({
resolution: resolutionBox.options[resolutionBox.selectedIndex].value,
codec:codecBox.options[codecBox.selectedIndex].value,
Expand All @@ -171,7 +191,7 @@ const start = (sc) => {
localVideo.autoplay = true;
localVideo.controls = true;
localVideo.muted = true;
joinBtns.style.display = "none";
// joinBtns.style.display = "none";
localRTC.publish(media);
localDataChannel = localRTC.createDataChannel("data");
})
Expand Down
Loading

0 comments on commit 6fc0e09

Please sign in to comment.