Du bist nicht angemeldet. [Anmelden]
Optionen
Thema bewerten
Client.addEventListener empfängt keine Daten - #2829169 - 02.01.2017, 12:35:31
Senzious
Nicht registriert


Frohes neues,

ich habe mal wieder eine Frage bezüglich des Empfangen von Daten via Client.
Und zwar habe ich einen KnuddelsServer.getPersistence().getObject('key', { arr: [] }).arr; und möchte diesen mit sammt Inhalt dem Client übergeben.

Das Popup öffnet man via einem Chatbefehl:
Code:

		if(!user.isAppManager()) {					
			user.sendPrivateMessage('Du hast keine Berechtigung, um diese Funktion ausführen zu können.');					
		} else if(!user.canSendAppContent(appContent[1])) {
			user.sendPrivateMessage('Leider unterstützt dein Endgerät diese Variante nicht.');
		} else {
					
			var Object = KnuddelsServer.getPersistence().getObject('key', { arr: [] }).arr;
			user.sendAppContent(appContent[1]);
			for(var i = 0; i < Object.length; i++) {

				user.sendAppEvent('eventReceived', {

						'nickname': Object[i].nick.
						'string': Object[i].string

				});
			}

		}


Und empfange dieses via Client folgendermaßen:

Code:

	document.addEventListener('gameEnded', function(event) {
		var type = event.type;
		var data = event.data;
		
		$('#text').html(data['nickname'] +  ':: ' + data['string']);
		
	});



leider bekomme ich bei <span id="text"></span> keinen Eintrag übergeben. Wo ist mein Denkfehler? :-D

//edit: Im getObject sind Werte eingespeichert, daran liegt's schonmal nicht :-D

Mit freundlichen Grüßen,
Florian


Bearbeitet von Senzious (02.01.2017, 12:37:53)

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829170 - 02.01.2017, 12:42:48
Vampiric Desire
​ChannelMaster

Registriert: 15.09.2013
Beiträge: 1.681
Client.addEventListener
und es ist nicht
user.sendAppEvent sondern
session.sendEvent('gameEnded',....)


wobei session = user.sendAppContent(....)


Bearbeitet von Vampiric Desire (02.01.2017, 12:43:49)
_________________________
/apps install 30559674.ChannelMaster

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829171 - 02.01.2017, 12:43:04
Senzious
Nicht registriert


Konnte Beitrag leider nicht mehr bearbeiten:
gameEnded ist natürlich eventReceived und der . wurde durch , ersetzt :-D Funktioniert trotzdem noch nicht..

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: Vampiric Desire] - #2829172 - 02.01.2017, 12:44:04
Senzious
Nicht registriert


Antwort auf: Vampiric Desire
Client.addEventListener


Gleiches Problem, bekomme nichts empfangen ._.

Screenshot::: http://picul.de/view/Haq


Bearbeitet von Senzious (02.01.2017, 12:46:59)

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829173 - 02.01.2017, 12:45:30
Vampiric Desire
​ChannelMaster

Registriert: 15.09.2013
Beiträge: 1.681
Antwort auf: Senzious
Antwort auf: Vampiric Desire
Client.addEventListener


Gleiches Problem, bekomme nichts empfangen ._.


siehe mein edit :-D
_________________________
/apps install 30559674.ChannelMaster

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: Vampiric Desire] - #2829174 - 02.01.2017, 12:48:33
Senzious
Nicht registriert


http://picul.de/view/Haq

main.js
Code:

				if(!user.isAppManager()) {					
					user.sendPrivateMessage('Du hast keine Berechtigung, um diese Funktion ausführen zu können.');					
				} else if(!user.canSendAppContent(appContent[1])) {
					user.sendPrivateMessage('Leider unterstützt dein Endgerät diese Variante nicht.');
				} else {
					
					var feedbackhis = KnuddelsServer.getPersistence().getObject('feedbackhis', { his: [] }).his;
					user.sendAppContent(appContent[1]);
					
					for(var i = 0; i < feedbackhis.length; i++) {
						
						appContent[1].sendEvent('eventReceived', {
							
							'sender': feedbackhis[i].sender,
							'stars': feedbackhis[i].stars,
							'message': feedbackhis[i].message
						
						});
						
							KnuddelsServer.getDefaultLogger().info('Konnte _°B°"' + feedbackhis[i].sender + ' || ' + feedbackhis[i].stars + ' || ' + feedbackhis[i].message + '"°r°_ empfangen.');
						
						
						
					
					}



test.js
Code:



Client.addEventListener('eventReceived', function(event) {
        var type = event.type;
        var data = event.data;
		
		$('#text').html(data['sender'] + data['stars'] + data['message']);
		
});


	



index.html
Code:
<span id="text">[]</span>


Bearbeitet von Senzious (02.01.2017, 12:51:24)

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829175 - 02.01.2017, 12:54:17
Vampiric Desire
​ChannelMaster

Registriert: 15.09.2013
Beiträge: 1.681
machst du es dann bitte über die session und nicht den appContent?
var session = user.sendAppContent(appContent[1]);
session.sendEvent('eventReceived',....);
_________________________
/apps install 30559674.ChannelMaster

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: Vampiric Desire] - #2829178 - 02.01.2017, 13:08:01
Senzious
Nicht registriert


Ausgezeichnet! :-)

Nun tritt das nächste Problem auf, wofür nur ich was kann, da ich zu wenig Erfahrung in diesem Gebiet habe.
Ich möchte in diesem PopupContent nun eine Liste anfertigen, mit all den Daten.

Leider gibt er momentan nur einen Eintrag und zwar den letzen, der hinzugefügt worden ist, aus. (Es sind zzt. 2 Einträge gespeichert) Wie kann ich dieses Problem lösen, das er alle Einträge ausgeben tut?

Code:
	Client.addEventListener('eventReceived', function(event) {
        	var type = event.type;
       	 	var data = event.data;

		
		for(var i = 0; [...]) { // Hier stehe ich nun auf dem Schlauch..
			
			$('#text').html(data['sender'] + data['stars'] + data['message']);
			
		}
	
	});



Würde es was bringen, es beispielsweiße so zu machen?: (Hab ich schon ausprobiert, leider ohne Erfolgt)

Code:
	Client.addEventListener('eventReceived', function(event) {
        	var type = event.type;
       	 	var data = event.data;
		var obj = data['obj'];

		// data['obj'] = KnuddelsServer.getPersistence().getObject('key', { arr: [] }); - Übergeben von main.js

		
		for(var i = 0; obj.length; i++) {
			var test = obj[i];
			$('#text').html(test.data['sender'] + test.data['stars'] + test.data['message']);
			
		}
	
	});



Bearbeitet von Senzious (02.01.2017, 13:09:33)

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829179 - 02.01.2017, 13:08:48
Vampiric Desire
​ChannelMaster

Registriert: 15.09.2013
Beiträge: 1.681
statt .html()
nimm .append()
_________________________
/apps install 30559674.ChannelMaster

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: Vampiric Desire] - #2829180 - 02.01.2017, 13:12:16
Senzious
Nicht registriert


Antwort auf: Vampiric Desire
statt .html()
nimm .append()


Meine Güte, man will immer alles so kompliziert machen :-D
Vielen herzlichen Dank & dir wünsche ich noch einen angenehmen Tag &#9829;

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829202 - 02.01.2017, 14:40:17
Senzious
Nicht registriert


So weit so gut! :-)
Aber leider gibt es nur noch ein Problem, welches ich nicht so einfach wie gedacht lösen kann.
Und zwar möchte ich die Einträge so sotieren können, das der neuste Eintrag als erstes auf der Liste steht. Nun habe ich in der Knuddels-Api nachgeschaut & das einzigste was mir dazu sagt ist UserPersistenceNumbers.getSortedEntries('key', { ascending: false, count: 10 });.
Nur bin ich mir nicht ganz sicher, ob das nur für die User Persistence gilt, oder ob ich auch dieses Objekt damit sotieren kann.

Ich habe es soweit folgendermaßen:
Code:

	function getTable() {
		
		var code = '';
		
			code += '<div id="table"><div class="row">';
			var feedbackhis = UserPersistenceNumbers.getSortedEntries('feedbackhis', { ascending: false, count: 10 });
			
			for(var i in feedbackhis)
			
			
				code += '<div class="cell">';
				code += data['time'] + data['sender'] + data['stars'] + data['message'];
				code += '</div>';
				
			
			
			code += '</div></div>';
		
		return code;
		
	}


Und übergebe es mit:
Code:
					for(var i = 0; i < feedbackhis.length; i++) {
						
						session.sendEvent('eventReceived', { 'text' : getTable() });						
					
					}


Und lese es in der HTML-Datei folgendermaßen aus:
Code:
					<script>
						Client.addEventListener('eventReceived', function(event) {

							var data = event.eventData;	
							
							$('#test').html(data['text']);
							
							
						});
					</script>


Bekomme leider die Meldung, das data undefined ist. Was ja auch klar ist aber ich komm nich weiter mit dieser Meldung :>

Nur leider bekomme ich nichts angezeigt..
Hoffe ihr habt noch ein wenig Geduld mit mir & könntet mir eventuell weiter helfen :-)

Mit freundlichen Grüßen,
Florian


Bearbeitet von Senzious (02.01.2017, 14:41:08)

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829299 - 03.01.2017, 05:44:10
Bizarrus
Nicht registriert


Nebenbei:
Nutzt du ein Popup, musst du dies auch bei sendEvent im zweiten Parameter mit angeben. Standardmäßig werden Events nämlich immer zum Overlay gesendet, nicht zum Popup.

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829355 - 03.01.2017, 14:00:16
Vampiric Desire
​ChannelMaster

Registriert: 15.09.2013
Beiträge: 1.681
Antwort auf: Bizarrus
Nebenbei:
Nutzt du ein Popup, musst du dies auch bei sendEvent im zweiten Parameter mit angeben. Standardmäßig werden Events nämlich immer zum Overlay gesendet, nicht zum Popup.


Clevere Menschen hätten gemerkt, dass er die AppContentSession nutzt.
_________________________
/apps install 30559674.ChannelMaster

[zum Seitenanfang]  
Re: Client.addEventListener empfängt keine Daten [Re: ] - #2829357 - 03.01.2017, 14:03:47
DdvOiD
​Still lovin

Registriert: 24.02.2005
Beiträge: 791
Ort: Deutschland, NRW, Kempen
Zitat:

Und lese es in der HTML-Datei folgendermaßen aus:
Code:
					<script>
						Client.addEventListener('eventReceived', function(event) {

							var data = event.eventData;	
							
							$('#test').html(data['text']);
							
							
						});
					</script>


Bekomme leider die Meldung, das data undefined ist. Was ja auch klar ist aber ich komm nich weiter mit dieser Meldung :>


probier es hier einfach mal mit

var data = event.data;

dann solltest du dein object auch wiederfinden


Bearbeitet von DdvOiD (03.01.2017, 14:04:14)
_________________________
Ich weiß ich bin ein A-loch... :-D , doch Scheiß egal ob ihr mich liebt... ICH hab mich gern :-]

[zum Seitenanfang]  


Moderator(en):  Plueschzombie