js建立socket(js建立长连接)

http://www.itjxue.com  2023-01-29 21:20  来源:未知  点击次数: 

Vue.js 如何使用 Socket.IO?

在很多需求业务中,都需要浏览器和服务器实时通信来实现功能,比如:扫码登录(扫码后,手机确认登录,PC网页完成登录并跳转)、订单语言提醒等,这些都是建立在两端实时通信的基础上的。对前端而言,来实现浏览器和服务器实时通信,最好的选择就是Socket.IO库,能够快速的实现两端实时通信功能。

Socket.IO是一个WebSocket库,可以在浏览器和服务器之间实现实时,双向和基于事件的通信。它包括:Node.js服务器库、浏览器的Javascript客户端库。它会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,非常方便和人性化,而且支持的浏览器最低达IE5.5

(1)、支持浏览器/Nodejs环境

(2)、支持双向通信

(3)、API简单易用

(4)、支持二进制传输

(5)、减少传输数据量

(1)客户端

main.js添加下列代码

发送消息和监听消息

(2)服务端

服务端,我们基于express搭建node服务器。

index.js文件

然后启动服务端服务

客户端即可查看效果。

JAVASCRIPT 如何实现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('pError'+exception);

}

}

!-- 发送数据 --

function send() {

socket.send(text);

}

!-- 断开Socket --

socket.close()

js建立简单socket

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;

(责任编辑:IT教学网)

更多

推荐网络工程师文章