app.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. var fs = require('fs')
  2. var http = require('http')
  3. var socketIO = require('socket.io')
  4. var express = require("express");
  5. var path = require("path");
  6. var app = express();
  7. app.use(express.static(path.join(__dirname, '/'))); //设置 express static 静态文件
  8. app.get("/chat", (req, res) => {
  9. fs.readFile("./client.html", (err, data) => {
  10. if (err) throw err;
  11. res.write(data);
  12. res.end();
  13. })
  14. })
  15. var server = http.createServer(app);
  16. var users = {};// sid socket
  17. var reflect = {};// name sid
  18. var io = socketIO.listen(server);
  19. io.on('connection', function (socket) {
  20. console.log(socket.id + "已经连接完成")
  21. // console.log(socket.id+"已经连接完成")
  22. //每次连接都对应一个 sid
  23. //每一个用户都有一个socket 对应一个 sid 对应一个 username
  24. // console.log(socket.id);
  25. io.sockets.emit('connectSucc', socket.id);
  26. //
  27. //发送私密消息
  28. socket.on('private message', function (from, to, msg) {
  29. // from -->sid
  30. //to -->sid
  31. for (const key in reflect) {
  32. console.log(key, ":", reflect[key])
  33. }
  34. // console.log('I received a private message by ', reflect[from],from, ' say to ', reflect[to],to, msg);
  35. if (reflect[to] in users) {
  36. // console.log('to :' + to);
  37. //to 222
  38. // users[reflect[to]].emit('to' + to, { mess: msg });
  39. users[reflect[to]].emit('to' + to, { person: from, content: msg });
  40. console.log('to' + to);
  41. console.log(reflect[to]);
  42. //
  43. // console.log(reflect[to],to+'_to');
  44. // xor <--> 222
  45. }
  46. });
  47. //新增用户
  48. socket.on('new user', function (data) {
  49. reflect[data] = socket.id;
  50. // var sidList =
  51. //data 是 from 谁发的 添加到这个 users列表 登陆的用户
  52. if (socket.id in users) {
  53. socket.emit("userHasLogin");
  54. } else {
  55. // var nickname = data;
  56. users[socket.id] = socket;
  57. console.log(data, socket.id, "已经登录!")
  58. // users["aaa"] = socket
  59. //每一个登陆的用户有一个自己的socket
  60. }
  61. // console.info(users);
  62. });
  63. //断开连接
  64. socket.on('disconnect', function () {
  65. console.log('user' + socket.id + ' disconnected');
  66. });
  67. });
  68. server.listen(8080, function () {
  69. console.log('Listening at: http://localhost:8080');
  70. });