Eingeschränkte Funktionalität bei onAppStart
Versucht man im onAppStart einen Topic zu setzen oder den Nutzern ein appContent zu setzen, schlägt dies ohne Feldermeldung fehl.
Workaround: Die Funktionen im setTimeout Zeitverzögert aufrufen.
setTimeout(function() {
//setze das Topic neu, nach Start der App
App.setTopic(App.getTopic());
//Jeden den htmlHomeContent geben
var onlineUsers = KnuddelsServer.getChannel().getOnlineUsers(UserType.Human);
for(var i = 0; i < onlineUsers.length; i++) {
if(onlineUsers[i].canSendAppContent(App.htmlHomeContent)) {
onlineUsers[i].setAppContent(App.htmlHomeContent);
}
}
},1000);
Comments (10)
-
reporter -
Ich nutze selbst
setTopic
beionAppStart
und hab überhaupt keinerlei Probleme - Channel-Topic wird immer gesetzt, selbst wenn ich Random-Strings aus einem array nutze.Da man ja nie recht weiß (Sorce davon fehlt übrigens) was deine Methoden
App.setTopic(App.getTopic());
im AppContainer überhaupt machen, kann man da auch schlecht was zu sagen. -
reporter Es ist funktionierender Code und der Fehler tritt auch nicht immer auf. Vielleicht hat es Iro oder so aber bereits gefixed.... Und das Problem hatte ich mit setAppContent() ja ebenfalls und da willst du mir nun nicht ernsthaft sagen, dass der Code nicht funktioniert.
-
Das will ich Ernsthaft damit sagen, ja.
Nehmen wir mal ein simples Beispiel: Chris ist der einzigste! der immer wieder Probleme mit seiner Persistenzen hat, Niemand anderes; Selbst in größeren Channels... Ich glaub das gleiche wird bei dir der Fall sein. Es muss am Code liegen, anders kann ich es nicht erklären :D
-
Das topic wird nur gesetzt , wenn du auch eine Änderung durchführst. Und ich vermute mal einfach das ist hier nicht immer der Fall. Bei setappcontent wird es ähnlich sein da du es beim appshutdown nicht removesd und dich auf das Auto close verlässt.
-
reporter - Falsch Das Topic war vorher unterschiedlich - Der Fehler liegt in der Funktionalität bei onAppStart - Der Code zum setzen ist selbstverständlich auch richtig.
- Falsch Der Fehler tritt auch auf, wenn kein UIContent offen ist..
Und damit die blöde Diskussion ein Ende hat App.setTopic = function(topic) { var channelConfiguration = App.channel.getChannelConfiguration(); var channelInformation = channelConfiguration.getChannelInformation(); channelInformation.setTopic(topic); };
Code ist 100% richtig, und selbst wenn ich es nicht über App.getTopic() aufgerufen habe sondern mit einem definierten String (sogar mit nem zufälligen String in dem ich Date.now() aufgerufen habe, änderte sich das Topic nicht und es gab keine Fehlermeldung. Erst als ich es im Timeout später aufgerufen habe funktionierte es wieder. Mal klappte es nach 1000ms timeout mal erst nach 5000ms timeout....
und jetzt um himmelswillen verkauft jemand anderes für dumm! verkauft mich nicht für doof Leute....
Und übrigens: der gleiche Code lief ganze Zeit ohne Probleme und es gab erst Probleme (direkt) nach dem Serverumzug...
-
Das hat nichts damit zu tun dass bei
onAppStart
noch nicht alles zur Verfügung steht; Selbst Sascha sagte bereits häufiger, dass man beionAppStart
sicher gehen kann dass alles zur Verfügung steht (man denke damals an die Situationen wo Leute innerhalb des AppContainers, aber außerhalb vononAppStart
calls getätigt hatten).Ich gehe schwer davon aus dass der AppServer/Chatserver die Pakete verschluckt; Dieses phänomen habe ich bereits nun öfters bemerkt dass Nutzer sich beschwerten, dass einige Dinge nicht übermittelt wurden.
-
reporter In wie weit dass der Fall ist, dass Pakete verschluckt werden während des Start der App sei dahingestellt. Dennoch habe ich nicht die volle Funktionalität in onAppStart, entweder weil die Pakete verschluckt werden oder weil nicht alles initialisiert ist. Das Endresultat für mich als Appentwickler bleibt das gleiche.
-
repo owner - marked as major
-
assigned issue to
-
repo owner - changed status to open
Ticket geöffnet.
- Log in to comment
1 Sekunde Delay reicht wohl auch nicht immer. Hier scheint also etwas verzögert zu initialisieren.