创建express项目
首先确定安装了node和npm,然后新建文件夹,控制台打开当前文件夹或者vscode终端
- npm init创建一个初始化的pagkage.json文件
npm init
2.选择当前文件的入口
3.安装依赖
npm install express --save
创建好项目之后,在根目录新建index.js文件(根据你的入口文件名 新建文件)
安装nodejs-websocket
npm install nodejs-websocket
安装完成之后,在index.js导入
//导入express
var express = require('express');
//创建实例
var app = express()
//导入websocket
var ws = require("nodejs-websocket")
创建websocket连接
var server = ws.createServer(function (conn) {
console.log("创建一个新的连接--------");
var mes = {};
a++;
conn.nickname=user+a
mes.type = "enter";
mes.data = conn.nickname + " 进来啦"
broadcast(JSON.stringify(mes));
//向客户端推送消息
conn.on("text", function (str) {
mes.type = "message";
mes.name=conn.nickname;
mes.data = str;
broadcast(JSON.stringify(mes));
// }
console.log("回复 "+str)
});
//监听关闭连接操作
conn.on("close", function (code, reason) {
console.log("关闭连接");
mes.type = "leave";
mes.data = conn.nickname+" 离开了"
broadcast(JSON.stringify(mes));
});
//错误处理
conn.on("error", function (err) {
console.log("监听到错误");
console.log(err);
});
//监听端口号
}).listen(8000);
function broadcast(str){
server.connections.forEach(function(connection){
connection.sendText(str);
})
}
如果出现跨域问题 允许全部用户访问
app.all('*', function (req, res, next) { //设置全局的全域问题,我这里是把所有的全部允许了,如果不怕麻烦或者业务需求,你也可以在请求里面写对应的跨域问题
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By", ' 3.2.1');
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
完整代码
//导入wxpress
var express = require('express');
var app = express()
app.all('*', function (req, res, next) { //设置全局的全域问题,我这里是把所有的全部允许了,如果不怕麻烦或者业务需求,你也可以在请求里面写对应的跨域问题
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By", ' 3.2.1');
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
var ws = require("nodejs-websocket")
var port=8000;
var name='dog';
var a=1;
// 创建一个连接
var server = ws.createServer(function (conn) {
console.log("创建一个新的连接--------");
var mes = {};
a++;
conn.nickname=name+a
mes.type = "enter";
mes.data = conn.nickname + " 进来啦"
broadcast(JSON.stringify(mes));
//向客户端推送消息
conn.on("text", function (str) {
mes.type = "message";
mes.name=conn.nickname;
mes.data = str;
fn(JSON.stringify(mes));
// }
console.log("回复 "+str)
});
//监听关闭连接操作
conn.on("close", function (code, reason) {
console.log("关闭连接");
mes.type = "leave";
mes.data = conn.nickname+" 离开了"
fn(JSON.stringify(mes));
});
//错误处理
conn.on("error", function (err) {
console.log("监听到错误");
console.log(err);
});
}).listen(port);
function fn(str){
server.connections.forEach(function(connection){
connection.sendText(str);
})
}
前端怎么使用websocket建立连接 请见另一个文章,