7
votes

Comment utiliser Express Post Demande d'éditeur Socket.io ou Sockjs?

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.

Je fais rapidement un code, mais semble qu'il ne fonctionne pas:

lib / serveur.js xxx

index.html xxx

"mon autre événement" ne semble rien recevoir.


1 commentaires

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.


4 Réponses :


16
votes

update: J'ai mis à jour l'exemple pour que vous puissiez le rendre plus complet. Je n'avais pas de app.listen avant, et voici aussi un script côté client qui montre qu'il fonctionne bien: xxx

et le serveur , maintenant avec un app.listen directive: xxx

utilisation: xxx

naviguer vers http: // localhost: 3000 / et cliquez sur le bouton. Vérifiez votre console pour la sortie.


2 commentaires

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);




-1
votes

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> xxx pré>

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);
});


0 commentaires

1
votes

simplement supprimer ce commentaire //socket.emit('news ', {Bonjour:' World '}); à socket.emit ('Actualités', {Bonjour: 'World'});

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»


0 commentaires