2016-10-27 5 views
0

Ich habe eine einfache App auf Docker Container ausgeführt. Dieser Container wird nicht ständig ausgeführt. Es beginnt, macht bestimmte Arbeit und stoppt. Wenn es soweit ist, möchte ich es über socket.io mit einem Server verbinden. Ich habe versucht, socket.io-client zu verwenden, aber immer noch nicht in der Lage, es funktioniert. Das ist mein App-Code:Wie verbindet man Knoten-App mit dem Server über socket.io?

var docker_host_ip = process.env.DOCKER_HOST_IP; 


var address = 'http://' + docker_host_ip +":" + port; 
console.log("console : " + address); 

var socket = require('socket.io-client')(address); 
socket.on("disconnect", function(){ 
    console.log("disconnected "); 
}); 


socket.on("connect_failed", function(err){ 
    console.log("err : " + err); 
}); 

socket.on('connect', function(){ 
    console.log("connected"); 
}); 

socket.on('news', function(data){ 
    console.log("data : " + data); 
    socket.emit("news", {docker: "This is docker"}); 
}); 
socket.emit("news", {docker: "This is docker"}); 

socket.on('error', function (err) { 
    console.log(err); 
}); 

Ich habe diese https://github.com/socketio/socket.io-client verwendet.

var port = 4000; 
app.use(express.static('.')) 

var http = require('http').Server(app); 
var io = require('socket.io')(http); 

io.on('connection', function(socket){                               
    socket.emit("news", {"hello": "hello"}); 
    socket.on("news", function(data){ 
    console.log("new " + data); 
    io.sockets.emit("news", data); 
    }); 

    socket.on('disconnect', function() { 
    console.log('Got disconnect!'); 
    }); 

}); 




app.get("/", function(res, req){ 
    req.sendFile(path.join('/index.html')); 
}); 


http.listen(port, function(){                                 
    console.log('listening on *' + port); 
}); 

Meine App zeigt keinen Fehler, aber keine Nachricht wird gesendet. Mein Server funktioniert korrekt über den Browser (mit socket.io). Kann mir bitte jemand sagen, was los ist?

+0

Was ist der Unterschied zwischen dem ersten Teil und dem zweiten Teil ?? –

+1

Der Client gibt ein Ereignis "connect_error" (https://github.com/socketio/socket.io-client#events) aus, wenn Verbindungsfehler auftreten, auf die Sie nicht achten. – robertklep

+0

Ich versuche Fehler zu machen. Aber immer noch kein Fehler, keine Reaktion. – dmx

Antwort

0

Sie haben zwei gleiche socket.emit Nachrichtennamen, ich denke, der Server sendet die Nachricht zuerst.

Server

socket.emit("news", {"hello": "hello"}); 

socket.on("news1", function(data){ 
    console.log("new " + data); 
    io.sockets.emit("news2", data); 
}); 

Client

socket.on('news', function(data){ 
    console.log("data : " + data); 
    socket.emit("news1", {docker: "This is docker"}); 
}); 


socket.on('news2', function(data){ 
    console.log("data : " + data); 
}); 
Verwandte Themen