在使用 Node http 服务器时,需要解决跨域问题
在server对应文件夹运行终端node index.js
(index为自定义的名称)
index.js文件中(名称自定)
原var io = require('socket.io')(app);
改为var io = require('socket.io')(app,{cors:true});
修改前:
修改后:
but
一般我们不会自己写一个服务器,所以,用express框架
安装
npm install --save express
同样要解决跨域问题
//var io = require('socket.io')(server);解决跨域问题
var io = require('socket.io')(server,{cors:true});
终端
node expressApp.js//名字自定
但实际,使用express的生成器,生成一个项目
express --view=ejs chatapp
报错
法将“express”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称 的拼写,如果包括路径,请确保路径正确,然后再试一次
使用 node 的 npm 安装了 express 框架后,并不会顺带着把 express 脚手架安装
安装“脚手架”
npm install express express-generator -g
再次运行
express --view=ejs chatapp
根据提示
cd chatapp
npm install
由于用npm下载突然出现卡死的现象,所以使用代理registry,在终端输入
npm config set registry https://registry.npm.taobao.org
npm install --save socket.io
npm start
由于出现报错TypeError: Cannot read property 'on' of undefined
,所以在对应语句做了延迟,
setTimeout(()=>{
//我加的
let socketio=require('./socketio')
//let socketio=require('./socketio');
let io=socketio.io;
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
},100)