nodejs + express实现websocket即时通讯的最简应用

现在很多项目都需要内嵌一个简单的即时通讯模块,做用户之间的快速沟通,我们昨天也实现了一个,用的socket.io这个插件,可以去npm网站下载或直接npm安装。

现在把最简配置贴出来,以备参考:

首先是服务端的route.js

const express = require('express')

const app = express()
const server = require('http').Server(app)

const io = require('socket.io')(server)
//在线用户
var onlineUsers = {};
//当前在线人数
var onlineCount = 0;
io.on('connection', function (conn) {
  conn.on('login', function (obj) {
    console.log('login', obj);
    if (!onlineUsers.hasOwnProperty(obj.userid)) {
      onlineUsers[obj.userid] = {
        id: obj.userid,
        conn: conn
      };
      onlineCount++;
    }
  });
  conn.on('disconnect', function () {
    if (onlineUsers.hasOwnProperty(conn.userid)) {
      var obj = {
        id: obj.userid,
        conn: conn
      };
      delete onlineUsers[conn.userid];
      onlineCount--;
    }
  });
  conn.on('sendMsg', function (data) {    
    var rids = data.to.split(',')
    for (let id of rids) {
      if (id) {
        var receiver = onlineUsers[id]
        if (receiver) {
          receiver.conn.emit('receiveMsg', data.msg)
        }
      }
    }
  })
});

server.listen('3000', () => {
  console.log('open Browser on http://127.0.0.1:3000')
})

然后是网站前端的页面调用,这里注意也要使用socket.io的客户端js插件,建议下载下来:





  
  
  
  
  Document



  

WebSocket chat,欢迎使用:


整个过程非常简单,跟微软提供的SignalR实现过程非常相似

你可能感兴趣的:(前端应用,nodejs,websocket,即时通讯,聊天功能)