我正在尝试使用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>
答案 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'));
});
现在,您应该能够通过浏览器建立连接。
不需要使用多个端口,当客户端到达时,服务器将为每个客户端保持连接,您可以使用多个浏览器会话对其进行测试。