设置socket.io监听器?

时间:2018-03-09 22:05:28

标签: node.js express socket.io

我正在尝试使用heroku设置服务器。我的html被推送到端口,一切运行良好。现在我正在尝试用express.js实现socket.io,我在客户端遇到404错误。我是新手,并不太明白它是如何工作的。我是否为每个插槽创建一个新端口?如果没有,我该如何正确设置监听器?如果我想与我的服务器建立多个连接,这是否意味着每个连接都需要一个新的套接字和一个新的监听器?

var express = require('express'), http = require('http');
var app = express();
var path = require('path');
var server = http.createServer(app); //socket
var io = require('socket.io').listen(server); //socket

const bodyParser = require('body-parser');//website fetch
console.log(bodyParser);

app.set('port', (process.env.PORT || 5000)); //this sets the port in heroku and defaults to 5000 on local

//body parser middleware
app.use(bodyParser.json());//website fetch
app.use(bodyParser.urlencoded({extended: false}));//website fetch
app.use(express.static(path.join(__dirname, 'public')));//website fetch

// viewed at http://localhost:5000
app.get('/', function(req, res) {
  res.sendFile(path.join(__dirname + '/public/index.html'));
});

io.on('connection',function(data){ //socket
  console.log("CONNECTION"); //socket
});
server.listen(); //!!!!NOT SURE WHAT TO PUT HERE!!!!<<<<<<<<<<<<<<

// app.listen(5000);
app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
});
<html>
<head>
</head>
<body>
  <script src="socket.io/socket.io.js"></script>
  <script>var socket = io()</script>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

在代码的最后:

...
server.listen(); // REMOVE THIS LINE

// Change this:
app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
});

// By this:

server.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
});

现在,您应该能够通过浏览器建立连接。

不需要使用多个端口,当客户端到达时,服务器将为每个客户端保持连接,您可以使用多个浏览器会话对其进行测试。