2016-10-27 78 views
0

我有一個簡單的應用程序在碼頭集裝箱上運行。這個容器並不是一直在運行。它開始,做某些工作並停止。當它啓動時,我想通過socket.io將它連接到服務器。我曾嘗試使用socket.io-client,但仍無法使其正常工作。這是我的應用程序代碼:如何通過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); 
}); 

我用這個https://github.com/socketio/socket.io-client

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

我的應用程序沒有顯示任何錯誤,但沒有發送消息。我的服務器通過瀏覽器正常工作(使用socket.io)。 有人可以告訴我什麼是錯的?

+0

就是在第一部分和第二部分之間的差值Δθ –

+1

如果發生連接錯誤,客戶端會發出['connect_error'](https://github.com/socketio/socket.io-client#events)事件,您沒有收聽。 – robertklep

+0

我想兌現錯誤。但仍然沒有錯誤,沒有反應。 – dmx

回答

0

你有兩個相同的socket.emit消息名稱,我猜服務器先發送消息。

服務器

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

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

客戶

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); 
}); 
相關問題