Advertisement
Guest User

Untitled

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