WebSocket 入门篇(一)

WebSocket详解(二):揭开webSocket的神秘面纱 WebSocket 协议中的数据帧是 WebSocket 通信的基本单元,用于在客户端和服务器之间传输数据。WebSocket 协议定义了一种二进制格式来封装数据帧,这种格式既高效又灵活,能够支持多种类型的数据传输,包括文本和二进制数据。比如我们要描述现在的时间,我们会说今天是。 阅读详情

WebSocket 基础知识

1、WebSocket 实例化

      JavaScript中实例化            var ws = new WebSocket(url,protocols);

      实例化时可以接受两个变量

      1)、指向目标url,也就是服务请求的地址,url有两种方案:

               一、WS   非加密流量  例如:"ws://localhost:8080/echo"

               一、WSS 加密流量  例如:   "wss://localhost:8080/echo"

      2)、使用协议(可选参数):一、XMPP:可拓展消息处理现场协议。二、SOAP简单对象访问协议

 

2、WebSocket 事件

        var ws = new WebSocket("ws://localhost:8080/echo");

    1)open事件

         一旦服务器响应了WebSocket请求,open事件触发,建立一个连接,open事件对应的回调函数为 onopen

        ws.onopen = function (e) {

                writeToScreen("Connected !");

                doSend(textID.value);

        };

    2)message事件

         message事件在接收消息时候触发,接收来自服务器的数据,回调函数为onmessage

         ws.onmessage = function (e) {

               console.log("Connection Open ......");

        };

    3)error事件

          在响应故障时触发,回调函数onerror,错误还会导致WebSocket连接关闭,

         ws.error = function (e) {

                 console.log("WebSocket errror ......");

                 handerError();

        };

    4)close事件

        连接关闭时触发,回调函数onclose,一旦连接关闭,关闭的WebSocket服务不再接收和发送消息。

         ws.onclose = function (e) {

                console.log("Connection Closed:",e);

                       }

 

3、WebSocket 对象特性  readyState

       特性常量                           取值                       状态       

    WebSocket.CONNECTING       0                连接正在进行,但还未建立

    WebSocket.OPEN                    1                 连接已经建立,消息可以在客户端和服务端进行传递

    WebSocket.CLOSING              2                 连接正在进行关闭握手

    WebSocket.CLOSED                3                连接已经关闭,不能打开

    

4、WebSocket 方法

       1)send方法

            调用send(data) 向服务器端发送消息,

            注意:send方法只有在连接打开时候才可以发送数据,否则会抛出无效连接异常,发送案例

            function myEventHandler(data) {

                if (ws.readyState === WebSocket.OPEN) {   //判断连接是否有效
                        ws.send(data);
                } else {
                        // 无效可以进行重新连接
                }
           }
       
       1)close方法
            使用close(code,reson)方法,可以关闭WebSocket连接或者终止尝试连接,已经关闭则什么都不做,在调用close()之后,
            不能在已关闭的WebSocket上发送任何请求

            close方法有两个参数(通过两个参数,可以让服务器端知道为什么关闭连接)

           一、code :数字类型状态代码

           二、reson:文本字符串

前端|Vue|WebSocket 超详细 使用ReconnectingWebSocket实现无缝实时通信 WebSocket 是一种网络通信协议,提供了一个全双工通信渠道,允许数据在客户端和服务器之间以极低的延迟双向传输。与传统的 HTTP 请求不同,WebSocket 在建立连接后可以保持该连接开放,使得数据可以随时在两端传送,而无需重新建立连接。WebSocket 通信由一个握手过程开始,客户端通过 HTTP 请求与服务器建立连接,并升级到 WebSocket 连接。一旦握手成功,WebSocket 连接就会保持开放状态,直到客户端或服务器主动关闭。 阅读详情

相关推荐

WebSocket全部内容及项目经验

在websocket在项目中的使用,详细内容以及面试中websocket和socket的区别

weixin_70245286的博客 697

WebSocket入门及使用指南

为何使用websocket 在浏览器与服务器通信间,传统的 HTTP 请求在某些场景下并不理想,比如实时聊天、实时性的小游戏等等, 其面临主要两个缺点: 无法做到消息的「实时性」; 服务端无法主动推送信息; 其基于 HTTP 的主要解决方案有: 基于 ajax 的轮询:客户端定时或者动态相隔短时间内不断向服务端请求接口,询问服务端是否有新信息;其缺点也很明显:多余的空请求(浪费资源)、数据获取有延时; Long Poll:其采用的是阻塞性的方案,客户端向服务端发起 ajax 请求,服务端挂起该请求不返

yimeichengxuyuan的博客 4998

eclipse和tomcat8的websocket入门篇

最近笔者在做websocket的调研,本来以为很快就可以写一个demo出来,没想到一拖再拖,这么久了才写出一个demo。在网上找了很多例子,但是总觉得没说清楚。有的例子还很老了,是关于tomcat7的,但是tomcat7关于websocket的有些包已经启用,无法使之编译通过。还有的例子是关于jetty之类的其他服务器,由于tomcat使用比较广泛,所以在此笔者只调研了tomcat8的demo。我

strong815的专栏 5356

WebSocket | 基于TCP的全双工通信网络协议

本文介绍基于 TCP 的一种新的网络协议——WebSocket

逐梦苍穹的博客 3418

WebSocket系列之基础知识入门篇

概述 本文是WebSocket系列的第一篇,主要介绍WebSocket相关的基础协议知识和API。由于WebSocket的相关介绍在MDN中分布较乱,初学者不太容易入门,因此通过本文将相关基础知识和使用方法进行一个归纳和总结。 本文主要内容如下: WebSocket基础概念介绍 WebSocket协议初读 WebSocket 相关API浅析 WebSocket在线上项目中的使用 通过本文,你能够了解到WebSocket相关基础知识,同时了解到WebSocket在线

weixin_42899690的博客 622

websocket实现(一):javax.websocket

websocket实现(一):javax.websocket

u014374743的博客 2455

WebSocket入门篇(一)

WebSocket。

Flying____fish的博客 1249

Go语言websocket (一)

之前一段时间工作需要使用websocket写一个聊天系统,是给游戏服务做的客服系统; 就学习了一下go语言中的websocket… 我对socket的理解 socket是网络连接的底层实现,服务器和客户端建立连接进行信息交互。 客户端的功能:向服务器发送连接请求(就像A给B打电话,等对方接听),给服务器发送信息(A说话); 服务器的功能:是一直监听发来请求(B的工作就是一直等着来电话,接电话),连...

swan_tang的博客 7282

SpringBoot使用Websocket(一)

webSocket是HTML5的一种新协议,它实现了服务端与客户端的全双工通信,建立在传输层,tcp协议之上,即浏览器与服务端需要先建立tcp协议,再发送webSocket连接建立请求。webSocket的连接:客户端发送请求信息,服务端接受到请求并返回相应的信息。连接建立。客户端发送http请求时,通过 Upgrade:webSocket Connection:Upgrade 告知服务器需要建...

阿靖的博客 5万+

二元交叉熵:分类模型概率校准的数学根基

二元交叉熵(BCE)是二分类任务中实现概率校准的核心损失函数,其本质源于最大似然估计与KL散度,确保模型输出具备真实可解释的概率意义。相比均方误差(MSE)或Hinge Loss,BCE强制优化预测分布与真实伯努利分布之间的信息差异,使p=0.8真正对应约80%的正例发生率,支撑风控、医疗、推荐等高信度场景的阈值决策。它不只影响训练收敛,更决定部署后概率的业务可信度——这正是Focal Loss等变体无法替代其基础地位的根本原因。理解BCE,就是理解分类模型如何从‘打分器’进化为‘概率契约签署者’。

congli3478的博客 1336

AIGC实战:用ComfyUI和Lora微调打造专属原神角色(含完整工作流)

本文详细介绍了如何利用ComfyUI和Lora微调技术打造专属原神风格角色,涵盖从环境配置、数据集准备到工作流构建和Lora训练的全过程。通过模块化节点设计和高级控制技术,创作者可实现高度个性化的AIGC艺术创作,提升二次元角色生成的效率与质量。

weixin_29185199的博客 351

SpringBoot集成WebSocket实战一

SpringBoot集成WebSocket实战一1.什么是WebSocket2.为什么要使用WebSocket3.SpringBoot整合WebSocket4. 服务器主动推送数据给前端 1.什么是WebSocket 什么是websocket,百度百科的解释是:"websocket是一种在单个TCP连接上进行全双工通讯的协议,websocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据,在websocket中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的

静幽水 4201

交流异步机VVVF变频控制simulink/matlab仿真分析

VVVF,是Variable Voltage and Variable Frequency的缩写, 意为:可变电压、可变频率,也就是变频调速系统。 VVVF控制的逆变器连接电机,通过同时改变频率和电压,达到磁通恒定(可以用反电势/频率近似表征)和控制电机转速(和频率成正比)的目的,所以多应用在变频器中,属于工业自动化领域。

Ezekiel_Mok的博客 4211

WebSocket四种事件详解 入门篇(二)

    示例代码  在文章最下方,可以根据示例代码和讲解来理解整个WebSocket流程。代码用SpringBoot 和 maven搭建   服务端和客户端四种事件 1、打开事件     此事件发生在端点上建立新连接时并且在任何其他时间发生之前。     方法级注解:@OnOpen                         使用注解的的方法是没有任何返回值的公有方法,这些方法...

Mark_Xu的博客 1万+

算法交易VWAP&TWAP

VWAP的一些算法模型细节参考博客地址http://blog.sina.com.cn/s/blog_ad47bc5b01014elx.html 日内交易量预测模型http://blog.sina.com.cn/s/blog_976461170102v43p.html 算法交易其实主要是用在基金公司、券商量化比较多。例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完

shulixu的博客 1万+

LabVIEW+数据库应用系列保姆级教程,第一篇数据库连接

目录LabVIEW连接数据库的方法连接MySQL连接Oracle,SQL Server,Access等 LabVIEW连接数据库的方法 1、创建udl(Universal Data Link)是通用数据连接文件。界面操作,简单快捷。 2、编写连接字符串。需要熟悉连接字符串的结构,容易出错。 3、其他… 本教程教你使用第1种方法,也是最简单、最常用的方法。 连接MySQL 1、在MySQL Installer内安装MySQL Connector/ODBC,建议安装32位(X86),如下图: 2、创建ODBC

wwplh5520370的博客 1万+

Golang 搭建 WebSocket 应用(一) - 初识 gorilla/websocket

在本系列文章中,将会使用在 Go 中一个用得比较多的WebSocket实现。

rubys007的博客 4294

tuts4you-lena151-Crackme-tutorial06

一、前言      本次研究的是lena151-Crackme-tutorial06,也是一个应用程序,但因为平台迭代的关系,程序不能正常运行,只能完成部分破解。 (一)·本次我们要破解的目标是个应用程序,如下图 (二)、使用工具:x32dbg 二、过程 这个程序的破解的方法很多,首先最简单的一种不外乎就是搜索字符串,我就按照这个思路来完成。 (一)查找字符串<Unregis...

h123120的专栏 520

WebSocket原理详解(一)

我们知道TCP连接的两端,同一时间里双方都可以主动向对方发送数据。这就是所谓的全双工。而现在使用最广泛的HTTP1.1,也是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,这就是所谓的半双工。也就是说,好好的全双工TCP,被HTTP用成了半双工。为什么?这是由于HTTP协议设计之初,考虑的是看看网页文本的场景,能做到客户端发起请求再由服务器响应,就够了,根本就没考虑网页游戏这种,客户端和服务器之间都要互相主动发大量数据的场景。所以为了更好的支持这样的场景,我们需要另外一个。

红军不怕远征难,万水千山只等闲 2320

亚马逊广告接口 amazon advertising

亚马逊广告接口官方说明:https://advertising.amazon.com/API/docs/en-us/setting-up/account-setup 一:注册aws开发者账号 注册地址:https://developer.amazon.com 二:填写注册资料 三:进入控制台,生成安全配置文件 进入 Login with Amazon 菜单: 创建配置文件: 四:申请广告接入权限 申请地址:https://advertising.amazon.com/zh-cn/about-api

lzy66666的博客 4776

【人工智能】 WebDev Arena:实时AI Web开发竞赛的技术探索与价值

《AI编程竞赛推动Web开发技术创新》摘要:WebDev Arena作为聚焦Web开发领域的实时AI编程竞赛,通过标准化竞技环境检验AI模型在代码生成、问题解决等方面的能力。竞赛覆盖前端、后端等全流程开发环节,采用实时评分机制,推动AI对复杂Web需求的理解和多元技术栈适配。该赛事不仅促进AI编程技术创新,更为Web开发行业与AI技术融合搭建桥梁,有望提升开发效率、降低技术门槛。未来将拓展Web3.0等前沿技术主题,持续推动行业智能化发展。(150字)

奶爸的编程之路,也就一周冷个三天 258

Air780E软件指南:WebSocket技术 | 入门篇

今天我们学习关于Air780E的WebSocket技术入门篇,希望大家对此有深入的了解。

Heishuiwolaile的博客 957

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

websocket一基础

websocket基础了解

chenXiJ的博客 3047

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Unity3D关于WebSocket的实现(一)

前情概要 服务端使用的是SpringBoot,详情实现方式请阅读 SpringBoot及Construct2关于WebSocket的实现(一) 为了使同个服务端不同游戏引擎都可以用,后面我会用Json插件将它们封装成Json字符串进行传输通信 一、介绍 使用Unity3D做为WebSocket客户端,主要是使用了一个插件BestHttp(你懂的) 放上下载链接: Best HTTP -...

迷之异常的博客 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

React中使用websocket连接

React WebSocket

小蜜蜂的博客 4万+

WebSocket的简单搭建和使用,(基础入门篇)

最近写bug的时候用了websocket,其实这个东西个人认为还是挺重要的吧。今天就来简单搭个项目整理一下吧1、环境2、先新建一个SpringBoot项目吧 1、环境 后端:Java 前端: Vue.js 框架:SpringBoot 2、先新建一个SpringBoot项目吧 ...

Mr_Van的博客 2773
上一篇: WebSocket消息类型 入门篇(三)
下一篇: WebSocket四种事件详解 入门篇(二)
Mark_XC
博客等级 码龄9年 16粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值