node.js websocket.io 搭建 websocket 通信服务

有一段时间没有写博客了,前段时间一直在忙项目,由于项目的需求,需要搭建一个websocket的通信服务,用于教师机对客户端(学生端)进行通信已执行一些操作,之前用java写了一个websocket通信的东西,但是这个东西的稳定性太差,本来是搞java的,说是撸一个netty框架的websocket,但是项目组长说用node.js写一个,,,

websocket.io W3Cschool api 文档
https://www.w3cschool.cn/socket/socket-odxe2egl.html
废话不多少,直接上代码,代码运行需要安装 node环境 和相关模块

服务端:

let express = require('express');
let http = require('http');
let request = require("request");
let qs = require('querystring');


let app = express()
app.use(express.static(__dirname))
app.get('/', function (res, req) {
    res.header('Content-Type', 'text/html;charset=utf8')
    res.sendFile(path.resolve('index.html'))
})
let server = http.createServer(app)
let teacher = {};
// 客户端实例id
let users = {};
let userType = {};
let post_data = {};
let resData = {};
let url = "";
// 因为websocket协议是要依赖http协议实现握手的,所以需要把httpServer的实例传递给socket.io
let socketIo = require('socket.io')
let io = socketIo(server)
// 在服务器监听客户端的链接
io.on('connection', socket => {
    console.log('客户端连接到服务器')
    io.to(socket.id).emit('message',"服务器连接成功......");
    console.log(users)
    console.log(teacher)
    // 监听接受客户端发过来的消息
    socket.on('message', msg => {
        console.log('客户端消息 :', msg)
        let data = msg;
        let key = getTeacherAccId(socket.id);
        if (data && data.code && key) {
            resData = {};
            post_data = {};
            url = "";
            switch(data.code){
                case 2001: // 延长考试时间
                	// 设置参数
                    post_data.examId = data.data.examId; 
                    url = "http://xx.xx.xx:8006/xxx";
                    postRequest(url,data.data.token,post_data,resData,false,key);        
                    break;
                case 2002: // 强制交卷
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值