WebSocketUtil.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import store from '../store'
  2. let websocket = null
  3. let commit = null
  4. export function createSoceket(options) {
  5. if (options) {
  6. commit = options.commit
  7. }
  8. // 判断当前浏览器是否支持WebSocket
  9. if ('WebSocket' in window) {
  10. if (websocket === null) {
  11. websocket = new WebSocket(process.env.VUE_APP_SOCKET_SERVER)
  12. init()
  13. }
  14. } else {
  15. alert('Not support websocket')
  16. }
  17. }
  18. export function init() {
  19. // 连接发生错误的回调方法
  20. websocket.onerror = function() {
  21. commit(`SET_SCOKET_STATE`, false)
  22. console.log('socket connect with error !')
  23. }
  24. // 连接成功建立的回调方法
  25. websocket.onopen = function(event) {
  26. commit(`SET_SCOKET_STATE`, true)
  27. console.log('socket is open !')
  28. }
  29. // 接收到消息的回调方法
  30. websocket.onmessage = function(event) {
  31. console.log(event.data)
  32. commit(`UPDATE_MESSAGE`, JSON.parse(event.data))
  33. console.log(store.getters.messageList)
  34. }
  35. // 连接关闭的回调方法
  36. websocket.onclose = function() {
  37. commit(`SET_SCOKET_STATE`, false)
  38. console.log('socket is closed !')
  39. }
  40. }
  41. // 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
  42. window.onbeforeunload = function() {
  43. websocket && websocket.close()
  44. }
  45. // 关闭连接
  46. export function closeWebSocket() {
  47. websocket && websocket.close()
  48. }
  49. // 发送消息
  50. export function send() {
  51. var message = document.getElementById('text').value
  52. websocket.send(message)
  53. }