Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. /**
  2. * @author Joyce Hong
  3. * @create date 2019-09-02 20:51:10
  4. * @modify date 2019-09-02 20:51:10
  5. * @desc socket.io server !
  6. */
  7.  
  8. const express = require('express');
  9. const bodyParser = require('body-parser');
  10.  
  11.  
  12. const socketio = require('socket.io')
  13. var app = express();
  14.  
  15. app.use(bodyParser.urlencoded({ extended: true }));
  16.  
  17. app.use(bodyParser.json());
  18.  
  19.  
  20. var server = app.listen(3000,()=>{
  21. console.log('Server is running on port number 3000')
  22. })
  23.  
  24.  
  25. //Chat Server
  26.  
  27. var io = socketio.listen(server)
  28.  
  29. io.on('connection',function(socket) {
  30.  
  31. //The moment one of your client connected to socket.io server it will obtain socket id
  32. //Let's print this out.
  33. console.log(`Connection : SocketId = ${socket.id}`)
  34. //Since we are going to use userName through whole socket connection, Let's make it global.
  35. var userName = '';
  36.  
  37. socket.on('subscribe', function(data) {
  38. console.log('subscribe trigged')
  39. const room_data = JSON.parse(data)
  40. userName = room_data.userName;
  41. const roomName = room_data.roomName;
  42.  
  43. socket.join(`${roomName}`)
  44. console.log(`Username : ${userName} joined Room Name : ${roomName}`)
  45.  
  46.  
  47. // Let the other user get notification that user got into the room;
  48. // It can be use to indicate that person has read the messages. (Like turns "unread" into "read")
  49.  
  50. //TODO: need to chose
  51. //io.to : User who has joined can get a event;
  52. //socket.broadcast.to : all the users except the user who has joined will get the message
  53. // socket.broadcast.to(`${roomName}`).emit('newUserToChatRoom',userName);
  54. io.to(`${roomName}`).emit('newUserToChatRoom',userName);
  55.  
  56. })
  57.  
  58. socket.on('unsubscribe',function(data) {
  59. console.log('unsubscribe trigged')
  60. const room_data = JSON.parse(data)
  61. const userName = room_data.userName;
  62. const roomName = room_data.roomName;
  63.  
  64. console.log(`Username : ${userName} leaved Room Name : ${roomName}`)
  65. socket.broadcast.to(`${roomName}`).emit('userLeftChatRoom',userName)
  66. socket.leave(`${roomName}`)
  67. })
  68.  
  69. socket.on('newMessage',function(data) {
  70. console.log('newMessage triggered')
  71.  
  72. const messageData = JSON.parse(data)
  73. const messageContent = messageData.messageContent
  74. const roomName = messageData.roomName
  75.  
  76. console.log(`[Room Number ${roomName}] ${userName} : ${messageContent}`)
  77.  
  78. // Just pass the data that has been passed from the writer socket
  79. const chatData = {
  80. userName : userName,
  81. messageContent : messageContent,
  82. roomName : roomName
  83. }
  84. socket.broadcast.to(`${roomName}`).emit('updateChat',JSON.stringify(chatData)) // Need to be parsed into Kotlin object in Kotlin
  85. })
  86.  
  87. //If you want to add typing function you can make it like this.
  88.  
  89. // socket.on('typing',function(roomNumber){ //Only roomNumber is needed here
  90. // console.log('typing triggered')
  91. // socket.broadcast.to(`${roomNumber}`).emit('typing')
  92. // })
  93.  
  94. // socket.on('stopTyping',function(roomNumber){ //Only roomNumber is needed here
  95. // console.log('stopTyping triggered')
  96. // socket.broadcast.to(`${roomNumber}`).emit('stopTyping')
  97. // })
  98.  
  99. socket.on('disconnect', function () {
  100. console.log("One of sockets disconnected from our server.")
  101. });
  102. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement