Je sais que cette question est un peu maladroite, mais le problème vient de Samsung TV 2010/11 2011 SmartTV (et du lecteur Blue Ray; bien sûr 2012 Emulateur fonctionnant bien). J'ai porté les simples exemples de conversation proviennent de la source et du package vers une application SmartTV. Les deux retombent à JSONP Sweet, mais de l'application SmartTV ne pouvant émettre / pousser au serveur une fois. Recevoir le message du serveur pourrait être plusieurs fois sans problème. Après avoir recherché la réponse dans le forum Samsung D (bien sûr, rien de là), je pense que le moyen le plus rapide de contourner ce problème est de déployer un serveur Express, de prendre les données post et de JSON.PARSE, puis d'éditez socket.io / sockjs en interne À l'intérieur du serveur lui-même.
Quelqu'un pourrait-il me montrer un code d'échantillon facile afin que je puisse commencer à partir de là? Merci beaucoup. P>
Je fais rapidement un code, mais semble qu'il ne fonctionne pas: p>
lib / serveur.js p> index.html p> "mon autre événement" ne semble rien recevoir. p> p>
4 Réponses :
update: strong> J'ai mis à jour l'exemple pour que vous puissiez le rendre plus complet. Je n'avais pas de et le serveur , maintenant avec un utilisation: p> naviguer vers app.listen code> directive: p>
http: // localhost: 3000 / code> et cliquez sur le bouton. Vérifiez votre console pour la sortie. P> p>
Linus, ce que j'ai essayé de faire, c'est d'émettre quelque chose écrit dans le serveur (auto-émettez-vous, courrier express sur socket.io émet). Le serveur poussez au mécanisme client qui fonctionne assez bien sur Samsung SmartTV (je dirais StupidTV personnellement). Si je mettez io.sockets.on ("foo", fonction (message) {// émet un autre au client ou simplement connecter la console} après App.listen (3000); il ne fera rien.
Pour la nouvelle version de Express: Var Express = Exiger ('Express'), http = Exiger ('http'); var bodyparser = nécessite ("parseur corporel"); var app = express (); var serveur = http.createserver (app); var io = exiger ('socket.io'). Écouter (serveur); serveur.listen (my_port);
J'apprécie votre travail. Cependant, votre exemple semble ne pas fonctionner de mon côté. 0. Je n'ai pas vu "post reçu" apparaissent sur la console. 1. J'ai fait un simple client HTML (index.html) juste faire une demande postale. À l'origine, je pensais que cela se montait sur localhost: 9999 / Echo / mais c'est sur localhost: 9999 /. 2. Même chose se produit sur Post lancé à partir de HTML.
Je ne sais pas si cela vous aiderait, mais vous pouvez créer une abstraction émettrice sur le client en fonction de votre navigateur, puis effectuer une fonction d'obtention séparée sur le serveur qui gérera la requête de la même manière que la socket.on rappeler. Afin de savoir où envoyer les informations, je vous suggère d'utiliser certaines touches que vous pouvez stocker dans une table de hachage dans le serveur et le stockage local sur le client.
pour le client:
p> pour le serveur:
P> var sockets = {};
var echo_handler = function(a) {
var socket = sockets[a.key];
var data = a.data;
socket.emit("response", data);
}
app.post("/emit/:event", function(req, res) {
var event = req.params.event;
switch (event) {
case "echo":
var a = {
key: req.param("key"),
data: req.param("data")
}
echo_handler(a);
break;
}
});
io.sockets.on("connection", function(socket) {
socket.on("connect", function(data) {
sockets[data.key] = socket;
});
socket.on("echo", echo_handler);
});
simplement supprimer ce commentaire //socket.emit('news ', {Bonjour:' World '}); à socket.emit ('Actualités', {Bonjour: 'World'}); P>
Cela fonctionnera car ses données émanant à travers des nouvelles et vous écoutez à l'aide de mon autre événement au lieu de «nouvelles» ou vous pouvez simplement écouter en utilisant «Mon autre événement» P>
J'ai trouvé la solution. Il suffit de déplacer tout ce qui est à l'intérieur de la «mon autre événement» vers une autre fonction et laissez-le poster et émettre l'appelez-le. Bien que ce problème résolve, j'ai besoin de gérer la prise qui se connecte sur une autre ligne.