[英]socket.io confusion with 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);
});
});
边码
var socket = io.connect('http://localhost:5000');
socket.on('place_order', function (data) {alert('data.x')})
我在github的某个地方git clone一个项目,我看到了上面的东西。 服务器端代码的第三行使我感到困惑。 为什么作者在这里创建了额外的端口? 舍弃第三行不是很好,而在通知方只需连接到没有端口的路径即可,例如var socket = io.connect('http://localhost:5000');
? 需要在这里解释socket.io专家,我很困惑。
顺便说一句,此代码确实有效。
为什么作者在这里创建了额外的端口?
您必须在某个端口上启动服务器,而server.listen(nnn)
是实现此目的的一种方法。 如果您不启动服务器,则该服务器实际上并未运行,并且您将永远无法连接到该服务器。
必须先创建服务器,然后在特定端口上启动服务器。
在您的特定代码示例中,您选择在端口5000而不是更常见的端口80上运行服务器。
丢掉第三行不是吗
否。没有它,您的服务器将无法运行。
如果您的服务器在端口80上启动,那么您不必在URL中列出端口号,因为这是http://
连接的默认端口号。
将socket.io
附加到HTTP服务器后,需要启动它。 套接字如何工作。 那就是第三行。 因此,删除它意味着您没有启动服务器本身,显然那是行不通的。
该端口的端口号为5000,这对您来说可能看起来是非常规的,但这是防止PORT 80
使用时出错的一种标准做法,就像其他基于Web /互联网的应用程序/服务器经常使用该PORT 80
一样。 但是,如果不是这种情况,可以通过将第三行替换为server.listen(80);
来将端口更改为server.listen(80);
对于Ref:如果收到错误: Error: listen EADDRINUSE :::80
然后直接了解该端口不是免费的!
那不是socket.io的问题。 在Node.js应用程序中,您需要指定要运行Node.js的端口。
Node.js是一个平台,在第一行中,您创建了一个服务器,为此,您需要放置服务器运行的端口。
https://nodejs.org/dist/latest-v6.x/docs/api/http.html#http_http
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.