Socket.io本地networking未连接

好的,我有以下设置: https : //i.stack.imgur.com/4T9SX.jpg (如果下面的图片太小)

在这里输入图像描述

问题是计算机2无法连接到计算机1的socket.io。

在这里输入图像描述

是的,我在电脑2中包含了socket.io:

在这里输入图像描述

任何想法,为什么计算机2无法连接到计算机1与socket.io而平可以?

额外的信息: – Socket.io版本1.4.5 – 两台计算机都是Windows 10 – 计算机2 JavaScript是在Phonegap – 计算机2通过Wi-Fi连接,计算机1通过以太网

问候

从客户端(计算机2,启动时调用init) 编辑代码:

KerstAppHome.prototype.init = function(){ var address = 'http://192.168.2.120:2017'; console.log("Connecting to: " + address); this.socket = io.connect(address); this.socket.on('connect', this.proxy(function(){ console.log("Connected to socket!"); this.socketIsConnected = true; this.socket.on('disconnect', this.proxy(function(){ console.log("Disconnected from socket!") this.socketIsConnected = false; })); this.socket.on('musicBlob', this.proxy(this.onMusicBlobReceived)) })); }; KerstAppHome.prototype.onMusicBlobReceived = function(musicBlob){ console.log("RECEIVED SOMETHING"); this.audioCtx.decodeAudioData(musicBlob).then(this.proxy(function(audioBuffer) { var source = this.audioCtx.createBufferSource(); source.buffer = audioBuffer; source.connect(this.audioCtx.destination); source.start(); })); } 

来自服务器的代码(计算机1):

 var port = 2017; var io = require('socket.io')(port); console.log("Listening for socket connections on port " + port); io.on('connection', function (socket) { console.log("Connection made!"); socket.on('musicBlob', function(musicBlob){ socket.broadcast.emit('musicBlob', musicBlob); }); }); 

浏览器(计算机1)的相关代码:

 var socket = io.connect('http://localhost:2017'); var socketIsConnected = false; socket.on('connect', function(){ console.log("Connected to server!"); socketIsConnected = true; }); socket.on('disconnect', function(){ console.log("Disconnected from server!") $scope.socketIsConnected = false; }); 

我想知道为什么电脑2甚至不能连接到服务器,console.log(“连接到套接字!”); 甚至不叫

注:如果我执行计算机1上的客户端(计算机2)的JavaScript,它完美的工作,使连接和接收数据!

注:我testing了电脑1(服务器)他的防火墙closures,它的工作完美!

请检查您的防火墙设置 ,或closures几分钟,并尝试,也要确保两台计算机应连接相同的lan / wifi。 和

允许phonegap,通过Windows防火墙的v8 JavaScript和安全套接字隧道协议的 Evented I / O

在图像中引用你的代码 – 你需要首先检查下面的东西

  1. 什么是像eglocalhost:2017你的nodejs公开的url – 如果你已经把它设置为locahost – 你的节点服务器运行的主机名为本地主机的URI和ip 127.0.0.1,不能从另一台机器访问 – 如果这是情况下,你需要分配实际的IP到节点进程192.168.2.120(在你的情况)只有那么你可以从另一台机器访问它
  2. 它有一个命名空间到套接字,io连接的过程
  3. 你使用Windows机器? 你需要打开networking和共享中心 – 如果你连接到公共networking – 连接将永远不会工作 – 至less运行nodejs服务器的机器应连接到家庭或办公networking

如果你正在面对这个问题,你可以参考下面的代码来启动服务器

 const http = require('http'); const url = '192.168.2.120'; var port = 2017; console.log("Listening for socket connections on port " + port); var requestListener = function (req, res) { res.writeHead(200); res.end('Hello, World!\n'); } var server = http.createServer(requestListener); var io = require('socket.io')(server); server.listen(port,url); console.log('Server running at:', url+':'+port); io.on('connection', function (socket) { console.log("Connection made!"); socket.on('musicBlob', function(musicBlob){ socket.broadcast.emit('musicBlob', musicBlob); }); 

这应该为你工作。