js建立简单socket

JavaScript07

js建立简单socket,第1张

import Stomp from "stompjs"

import SockJS from "sockjs-client"

let stompClient = null

class Socket {

  constructor(socketMsg) {

    this.socketMsg = socketMsg

  }

  /**

  * 向服务器发起websocket连接并发送CONNECT帧

  * @param {object} stompType 与服务器连接通道类型

  * @param {function} callback 回调方法

  */

  static startConnect( callback) {

    // 建立连接对象

    const socket = new SockJS(''连接地址)

    // 获取 STOMP 子协议的客户端对象

    stompClient = Stomp.over(socket)

    // 请求头验证,需要登陆

    const headers = {

      userId: JSON.parse(sessionStorage.getItem("id"))

    }

    // stompClient.debug = () =>{}

    stompClient.connect(

      headers,

      (result) =>{

        console.log("开始连接",result)

        // 订阅队列推送

        stompClient.subscribe('订阅1队列地址', res =>{

          // 收到推送内容

          callback(data)

        })

        // 订阅被邀请

        stompClient.subscribe('订阅2地址', res =>{

          callback(data)

        })

      },

      () =>{

        // console.log(err)

      }

    )

  }

  // 主动发送消息

  static send(data) {

    stompClient.send(data.url, headers, data.sendMsg)

  }

  // 断开连接

  static disconnect() {

    stompClient.disconnect(() =>{

      // console.log("连接关闭")

    })

  }

}

export default Socket

目前只有支持HTML5的浏览器加入了Javascript对Socket的支持, 而且目前处于测试阶段, 还不推荐使用. 如果你必须要用Javascript实现socket传输, 相关代码如下:

<!-- 初始化 -->

function connect(){

try{

var socket

var host = "ws://localhost:8000/socket/server/startDaemon.php"

var socket = new WebSocket(host)

message('<p class="event">Socket Status: '+socket.readyState)

socket.onopen = function(){

message('<p class="event">Socket Status: '+socket.readyState+' (open)')

}

socket.onmessage = function(msg){

message('<p class="message">Received: '+msg.data)

}

socket.onclose = function(){

message('<p class="event">Socket Status: '+socket.readyState+' (Closed)')

}

} catch(exception){

message('<p>Error'+exception)

}

}

<!-- 发送数据 -->

function send() {

socket.send(text)

}

<!-- 断开Socket -->

socket.close()