2016-07-29 66 views
0

服务器端代码:socket.io混淆express.js

var server = require("http").Server(express); 
var io = require("socket.io")(server); 
server.listen(5000); 

io.on('connection', function(client) { 

    client.on('order', function(data) { 
     io.emit('place_order',data); 
    }); 
}); 

cilent端代码

var socket = io.connect('http://localhost:5000'); 
socket.on('place_order', function (data) {alert('data.x')}) 

某处在github上我的git克隆一个项目,我看到上面的东西。第三行的服务器端代码让我困惑。为什么作者在这里创建额外的端口?是不是可以放弃第三行,并在沉默的一面只是连接到没有端口像var socket = io.connect('http://localhost:5000');路径?在这里需要socket.io专家的解释,我很困惑。

顺便说一句这个代码工作..

+0

的代码的第3行是声明因为node.js中不经常在端口80实施例运行:在[链接](https://nodejs.org/en/about/)它显示port 3000. – tuananh

+0

@tuananh第三行为套接字创建了另一个服务器5000,快速应用程序正在运行3000.是否有必要? –

回答

0

Why the author created extra port here?

你必须要对你的服务器的一些端口上server.listen(nnn)是做到这一点的方法之一。如果你没有启动你的服务器,它实际上并没有运行,你永远不能连接到它。

必须创建服务器,然后在特定端口上启动服务器。

在您的特定的代码示例,您选择没有你的服务器将不运行它运行,而不是更常见的端口80

isn't it ok to discard the 3rd line

号上的5000端口的服务器。


如果您的服务器上的端口80开始,那么你不必列出的URL端口号,因为这是一个http://连接的默认端口号。

+0

看看这个页面,https://mliu95.github.io/2014/07/13/Creating-an-online-multiplayer-web-game-using-Socketio-and-Quintus-Part1/关于'建立我们的webserver'部分。 –

+0

@ThianKianPhin - 看看那个页面上的内容?它有一个线路'服务器。听(80);'启动服务器。他们在该样本中选择了端口80。您可以选择Web服务器的端口号。客户当然必须连接您选择的任何端口号。 – jfriend00

0

将您的socket.io附加到HTTP服务器后,需要启动它。这是如何套接字工作。这就是第三行。所以,删除它意味着你没有启动服务器本身,显然这是行不通的。

端口为5000,对您而言可能看起来并不常规,但如果PORT 80正在使用中,这是一种防止错误的标准做法,就像它通常由其他基于Web/Internet的应用程序/服务器一样。但是,如果情况并非如此随意更换3号线为server.listen(80);

对于裁判的端口更改为80:如果你的错误:Error: listen EADDRINUSE :::80然后直接了解该端口是不是免费的!

+0

但它是明确的,它默认运行3000,为什么不使用相同的端口socket.io呢? –

+0

我不知道3000是Express的默认端口。但是,如果3000是免费的,为什么不使用它,如果你喜欢? – Iceman