<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://siprtc.azurewebsites.net/index.php?action=history&amp;feed=atom&amp;title=M3</id>
		<title>M3 - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://siprtc.azurewebsites.net/index.php?action=history&amp;feed=atom&amp;title=M3"/>
		<link rel="alternate" type="text/html" href="https://siprtc.azurewebsites.net/index.php?title=M3&amp;action=history"/>
		<updated>2026-05-06T14:32:58Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in sipRTC</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://siprtc.azurewebsites.net/index.php?title=M3&amp;diff=13&amp;oldid=prev</id>
		<title>Admin: Die Seite wurde neu angelegt: „= Erweiterung Chat um Räume = Das bestehende System soll nun ausgebaut werden, um ''Räume'' zu unterstützen. Damit sind mehrere Verbindungen gemeint, welche…“</title>
		<link rel="alternate" type="text/html" href="https://siprtc.azurewebsites.net/index.php?title=M3&amp;diff=13&amp;oldid=prev"/>
				<updated>2018-03-06T21:17:16Z</updated>
		
		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „= Erweiterung Chat um Räume = Das bestehende System soll nun ausgebaut werden, um &amp;#039;&amp;#039;Räume&amp;#039;&amp;#039; zu unterstützen. Damit sind mehrere Verbindungen gemeint, welche…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Erweiterung Chat um Räume =&lt;br /&gt;
Das bestehende System soll nun ausgebaut werden, um ''Räume'' zu unterstützen. Damit sind mehrere Verbindungen gemeint, welche parallel geführt werden können.&lt;br /&gt;
Die fertige Anwendung ist [https://pbx.prbox.biz/sipRTC/socketio-rooms.html hier] abrufbar.&lt;br /&gt;
&lt;br /&gt;
Bevor Nachrichten gesendet werden können, muss zuerst ein Raum ausgewählt werden. Pro Raum sind nur zwei Teilnehmer zulässig. Ein dritter Teilnehmer erhält eine Warnung, dass der gewählte Raum schon voll ist.&lt;br /&gt;
&lt;br /&gt;
Teile des Programmcodes stammen von der WebRTC-Demo-Applikation von Lukas Toggenburger.&lt;br /&gt;
&lt;br /&gt;
== Programm-Code ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Serverseitig ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;gt;&lt;br /&gt;
var counts = {};&lt;br /&gt;
&lt;br /&gt;
io.on('connection', function(socket) {&lt;br /&gt;
&lt;br /&gt;
	socket.on('disconnect', function() {&lt;br /&gt;
		if (typeof socket.session != &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
			socket.broadcast.to(socket.session).emit('message', {&lt;br /&gt;
				type : 'leave',&lt;br /&gt;
				session : socket.session&lt;br /&gt;
			});&lt;br /&gt;
			counts[socket.session] = 0;&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	socket.on('join', function(session) {&lt;br /&gt;
		if (typeof counts[session] == &amp;quot;undefined&amp;quot;) {&lt;br /&gt;
			console.log(&amp;quot;DEBUG: session = &amp;quot; + session&lt;br /&gt;
					+ &amp;quot; used for the first time&amp;quot;);&lt;br /&gt;
			counts[session] = 0;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var numClients = counts[session];&lt;br /&gt;
&lt;br /&gt;
		if (numClients === 0) {&lt;br /&gt;
			socket.join(session);&lt;br /&gt;
			socket.session = session;&lt;br /&gt;
			socket.emit('caller', session);&lt;br /&gt;
			counts[session]++;&lt;br /&gt;
		} else if (numClients === 1) {&lt;br /&gt;
			socket.join(session);&lt;br /&gt;
			socket.session = session;&lt;br /&gt;
			socket.emit('callee', session);&lt;br /&gt;
			counts[session]++;&lt;br /&gt;
			socket.broadcast.to(session).emit('calleeHasJoined', session);&lt;br /&gt;
		} else {&lt;br /&gt;
			socket.emit('full', session);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		console.log(&amp;quot;DEBUG: counts = &amp;quot; + JSON.stringify(counts));&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	socket.on('chat message', function(msg) {&lt;br /&gt;
		console.log('message: msg = ' + JSON.stringify(msg));&lt;br /&gt;
		console.log(&amp;quot;onmessage: counts = &amp;quot; + JSON.stringify(counts));&lt;br /&gt;
		socket.broadcast.to(socket.session).emit('chat message', msg);&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clientseitig ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;ul id=&amp;quot;messages&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;quot; id=&amp;quot;formJoin&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;room&amp;quot; size=&amp;quot;24&amp;quot; maxlength=&amp;quot;24&amp;quot;&lt;br /&gt;
		value=&amp;quot;Kanalnummer&amp;quot;&lt;br /&gt;
		onblur=&amp;quot;if (this.value == '') {this.value = 'Kanalnummer';}&amp;quot;&lt;br /&gt;
		onfocus=&amp;quot;if (this.value == 'Kanalnummer') {this.value = '';}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;button id=&amp;quot;connectButton&amp;quot;&amp;gt;Verbinden&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;quot; id=&amp;quot;formSend&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;input id=&amp;quot;m&amp;quot; autocomplete=&amp;quot;off&amp;quot; disabled=&amp;quot;disabled&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;button id=&amp;quot;sendMessage&amp;quot; disabled=&amp;quot;disabled&amp;quot;&amp;gt;Senden&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var isRoomJoined = false;&lt;br /&gt;
	var socket = io.connect('https://pbx.prbox.biz:3001');&lt;br /&gt;
		$('#formSend').submit(function() {&lt;br /&gt;
		socket.emit('chat message', $('#m').val());&lt;br /&gt;
		$('#m').val('');&lt;br /&gt;
		return false;&lt;br /&gt;
	});&lt;br /&gt;
		$('#formJoin').submit(function() {&lt;br /&gt;
		joinRoom();&lt;br /&gt;
		return false;&lt;br /&gt;
	});&lt;br /&gt;
		socket.on('chat message', function(msg) {&lt;br /&gt;
		$('#messages').append($('&amp;lt;li&amp;gt;').text(msg));&lt;br /&gt;
	});&lt;br /&gt;
	socket.on('full', function(msg) {&lt;br /&gt;
		window.alert(&amp;quot;Room is already full!&amp;quot;);&lt;br /&gt;
		isRoomJoined = false;&lt;br /&gt;
		document.getElementById('m').disabled = 'disabled';&lt;br /&gt;
		document.getElementById('sendMessage').disabled = 'disabled';&lt;br /&gt;
	});&lt;br /&gt;
		function joinRoom() {&lt;br /&gt;
		if (isRoomJoined == false) {&lt;br /&gt;
			console.log(&amp;quot;Raum wird beigetreten...&amp;quot;);&lt;br /&gt;
			isRoomJoined = true;&lt;br /&gt;
			document.getElementById('m').disabled = false;&lt;br /&gt;
			document.getElementById('sendMessage').disabled = false;&lt;br /&gt;
			document.getElementById('room').disabled = 'disabled';&lt;br /&gt;
			document.getElementById('connectButton').disabled = 'disabled';&lt;br /&gt;
			socket.emit('join',&lt;br /&gt;
			document.getElementById('room').value);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>