websocketStore.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. Vue.use(Vuex)
  4. const store = new Vuex.Store({
  5. state: {
  6. socketTask: null,
  7. websocketData: {}, // 存放从后端接收到的websocket数据
  8. },
  9. mutations: {
  10. setWebsocketData(state, data) {
  11. state.websocketData = data
  12. }
  13. },
  14. actions: {
  15. websocketInit({
  16. state,
  17. dispatch
  18. }, url) {
  19. state.socketTask = uni.connectSocket({
  20. url, // url是websocket连接ip
  21. success: () => {
  22. console.log('WebSocket连接成功!')
  23. },
  24. fail: e => {
  25. console.log('连接失败' + e)
  26. }
  27. })
  28. state.socketTask.onOpen(() => dispatch('websocketOnOpen'))
  29. state.socketTask.onMessage(res => dispatch('websocketOnMessage', res))
  30. state.socketTask.onClose(res => {
  31. state.socketTask == null
  32. state.socketTask = uni.connectSocket({
  33. url, // url是websocket连接ip
  34. success: () => {
  35. console.log('WebSocket连接成功!')
  36. },
  37. fail: e => {
  38. console.log('连接失败' + e)
  39. }
  40. })
  41. console.log('WebSocket连接关闭')
  42. });
  43. state.socketTask.onError(res => {
  44. state.socketTask == null
  45. console.log('WebSocket连接错误')
  46. });
  47. },
  48. websocketOnOpen({
  49. commit
  50. }) {
  51. console.log('WebSocket连接正常打开中...!')
  52. },
  53. // 收到数据
  54. websocketOnMessage({
  55. commit
  56. }, res) {
  57. let data;
  58. try {
  59. data = JSON.parse(res.data)
  60. } catch {
  61. data = {
  62. content: res.data
  63. }
  64. }
  65. commit('setWebsocketData', data);
  66. },
  67. websocketOnClose({
  68. commit,
  69. dispatch
  70. }) {
  71. console.log('WebSocket连接关闭')
  72. },
  73. websocketOnError({
  74. commit,
  75. dispatch
  76. }) {
  77. console.log('WebSocket连接错误')
  78. },
  79. websocketClose({
  80. state
  81. }) {
  82. if (!state.socketTask) return
  83. state.socketTast.close({
  84. success(res) {
  85. console.log('关闭成功', res)
  86. },
  87. fail(err) {
  88. console.log('关闭失败', err)
  89. }
  90. })
  91. },
  92. // 发送数据
  93. websocketSend({
  94. state
  95. }, data) {
  96. uni.sendSocketMessage({
  97. data,
  98. success: res => {
  99. console.log('发送成功', res)
  100. },
  101. fail: e => {
  102. console.log('发送失败', e)
  103. }
  104. })
  105. }
  106. }
  107. })
  108. export default store