app.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const socket = io('http://192.168.1.20:5000/')
  2. // debugger
  3. btn.addEventListener('click', function () {
  4. socket.emit('msg', {nick: user.value, message: text.value})
  5. })
  6. socket.on('msg', msg => {
  7. let messageP = document.createElement('p')
  8. let message = `${msg.message}`
  9. const linkRegEx = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/
  10. const youtubeRegEx = /http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-\_]*)(&(amp;)?‌​[\w\?‌​=]*)?/
  11. let matchLink = message.match(linkRegEx)
  12. let matchYoutube = message.match(youtubeRegEx)
  13. // console.log(matchLink)
  14. if (matchLink) {
  15. let [link] = matchLink
  16. if (link) {
  17. let newLink = `<a href="${link}" style="color:blue">${link}</a>`
  18. let newMessage = null
  19. newMessage = message.replace(link, newLink)
  20. if (matchYoutube) {
  21. let [, youtubeKey] = matchYoutube
  22. if (youtubeKey) {
  23. messageP.innerHTML = `<b>${msg.nick}</b> <br/> ${newMessage} <br/> <iframe width="560" height="315"
  24. src="https://www.youtube.com/embed/${youtubeKey}" title="YouTube video player"
  25. frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope;
  26. picture-in-picture" allowfullscreen></iframe>`
  27. }
  28. } else {
  29. messageP.innerHTML = `<b>${msg.nick}</b> <br/> ${newMessage}`
  30. }
  31. }
  32. } else {
  33. messageP.innerHTML = `<b>${msg.nick}</b> <br/> ${message}`
  34. }
  35. area.append(messageP)
  36. })