2016-08-30 179 views
0

我在HTTPS網站上啓用了個人userscript。 userscript使用Socket.io客戶端API連接到我的PC上的Node.js TCP服務器將Socket.io瀏覽器客戶端連接到本地Node.js網絡服務器

服務器注意到客戶端正在連接到服務器,但客戶端不會注意到連接,而是改爲接收來自瀏覽器控制檯

無法加載資源此錯誤:淨:: ERR_TIMED_OUT

我不知道如何解決這個錯誤,但我假設它有某種因與Socket.io和Net彼此不兼容或者網站不允許連接發生

這裏是我的客戶端代碼

socket.on('connect', function() { 
    console.log('CONNECTED TO SERVER'); 
    socket.on('message', function(msg) { 
     messageReceive(msg); 
    }); 
    setInterval(runRoutine, 1000); 
}); 

我的服務器代碼

var net = require('net'); 

var clients = []; 

var port = 8841; 

net.createServer(function(socket) { 

    socket.name = socket.remoteAddress + ':' + socket.remotePort; 
    clients.push(socket); 

    broadcast(socket.name + " has connected to the server", socket); 

    socket.on('message', function(data) { 
     broadcast(socket.name + "<>" + data, socket); 
    }); 

    socket.on('end', function() { 
     clients.splice(clients.indexOf(socket), 1); 
     broadcast(socket.name + '<>disconnected', socket); 
    }); 

    function broadcast(message, sender) { 
     console.log(message); 
     clients.forEach(function(client) { 
      if(client === sender) return; 
      //client.write(message); 
     }); 
    } 

}).listen(port); 

console.log("Chat server running at port " + port); 
+0

您不能這樣做,因爲服務器端的套接字是TCP套接字,而不是套接字套接字,所以您不會收到消息事件。爲什麼你使用TCP服務器而不是socket.io服務器? – mscdex

回答

0

的Javascript不能直接從瀏覽器中使用TCP套接字,然而的WebSocket和HTTP協議是可用的。如果可以的話,Soccket.io使用websockets。所以你的服務器端應該聽WebSocket連接。 參見示例here

相關問題