当我刚接触Express时,我想知道哪种方法可以与Generator一起安装并在其中使用Socket.io。
对于许多教程,他们展示了如何在手动安装的Express项目中安装socket.io的方法。
有人可以为此提出更好的解决方案吗?!
答案 0 :(得分:0)
您可以通过运行npm install express --save
并遵循说明来生成NodeJS(Express 4.x)新项目。
之后,您将在Project目录中拥有不同的文件夹:
我们还有2个文件:
完成此安装后,您当然需要运行npm install
来安装基本依赖项。
要在项目中运行socket.io npm i -s socket.io
在完成此安装后,我们进行必要的更改以使Socket.io在我们的项目中正常工作。要更改的文件是: / bin / www , /views/layout.html , /routes/users.js 和 app.js
替换此行
var app = require('../app');
与此
var app = require('../app').app;
并替换这个
var server = http.createServer(app);
与此
var server = require('../app').server;
替换此代码
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
</body>
</html>
与此一起
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io('//localhost:3000');
socket.on('socketToMe', function (data) {
console.log(data);
});
</script>
</body>
</html>
就在这行下方
var app = express();
添加此
var server = require('http').Server(app);
var io = require('socket.io')(server);
并在此行之前
app.use(logger('dev'));
添加此中间件
app.use(function (req, res, next) {
res.io = io;
next();
});
所有这些都是必需的,如果做得好,您就可以开始使用。
出于测试目的,您可以像这样修改 /routes/users.js :
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function (req, res, next) {
res.io.emit("socketToMe", "Users"); // This line was added to test Socket.io in action
res.send('respond with a resource');
});
module.exports = router;
,然后运行npm start
浏览至http://localhost:3000/users
,您应该在浏览器控制台中看到Users
。
仅此而已!