HTML5 WebSocketAPI实例(二)
来源:互联网 发布:the zen of python 编辑:程序博客网 时间:2024/06/08 14:31
统一后台代码:
LogHelper.LogHelper _log = new LogHelper.LogHelper();public void ProcessRequest(HttpContext context){ //处理WebSocket 请求 context.AcceptWebSocketRequest(DoWork);}/// <summary>/// 委托处理函数定义/// </summary>/// <param name="context">当前WebSocket上下文</param>/// <returns></returns>public async Task DoWork(AspNetWebSocketContext context){ //1.获取当前WebSocket 对象 WebSocket socket = context.WebSocket; //2.监视相应 while (true) { /* * 此处缓存数组指定读取客户端数据的长度 * 如果客户端发送数据超过当前缓存区,则会读取多次 */ ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[10]); //接收客户端信息 CancellationToken token; WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, token); if (socket.State == WebSocketState.Open) { //1.获取用户提交内容 string userMsg = Encoding.UTF8.GetString(buffer.Array, 0, buffer.Array.Length); //2.将内容以字符串的方式,返回客户端 string echo = "您传入的内容为:" + userMsg + ",数据总量:" + result.Count + ",数据类型" + result.MessageType; buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(echo)); await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None); } else { break; } }}1.发送二进制数组
<input type="button" value="发送" id="sendBtn" onclick="sendClick();" /><input type="button" value="关闭" id="closeBtn" onclick="closeClick();" /><div id="result"></div>JS:
var url = 'ws://localhost:55373/ashx/upload2.ashx';var ws = null;ws = new WebSocket(url);ws.onopen = function (e) { console.log('链接打开');}ws.onmessage = function (e) { showData(e.data);}ws.onclose = function (e) { console.info(e); console.log('链接已经关闭');}ws.onerror = function (e) { console.log('发生异常:' + e.message);}//显示后台字节数组function showData(data) { var result = document.getElementById('result'); result.innerHTML += data + '<br />';}//发送function sendClick() { var content = new Int8Array([65, 66, 67, 68]); //如果发送缓冲区没有数据才继续发送 if (ws.bufferedAmount <= 0) { ws.send(content); }}//关闭function closeClick() { ws.close(); ws = null;}
2.发送字符串
<input type="button" value="打开链接" onclick="openClick();" /><input type="text" id="txt1" /><input type="button" value="发送" id="sendBtn" onclick="sendClick();" /><input type="button" value="关闭" id="closeBtn" onclick="closeClick();" /><div id="result"></div>JS:
var url = 'ws://localhost:55373/ashx/upload2.ashx';var ws = null;//打开链接function openClick() { ws = new WebSocket(url); ws.onopen = function (e) { console.log('链接打开'); } ws.onmessage = function (e) { showData(e.data); } ws.onclose = function (e) { console.info(e); console.log('链接已经关闭'); } ws.onerror = function (e) { console.log('发生异常:' + e.message); }}//显示后台传送结果function showData(data) { var result = document.getElementById('result'); result.innerHTML += data + '<br />';}//发送function sendClick() { var content = document.getElementById('txt1').value; //如果发送缓冲区没有数据才继续发送 if (ws.bufferedAmount <= 0) { ws.send(content); }}//关闭function closeClick() { ws.close(); ws = null;}
显示说明:如果后台读取缓冲区,小于发送内容,后台则分多次读取
实例一:http://blog.csdn.net/u011127019/article/details/52457551
HTML5 WebSocket API简介
0 0
- HTML5 WebSocketAPI实例(二)
- 《HTML5经典实例》读书笔记二
- CSS3 HTML5实例二(图形化边界)
- html5之canvas实例(二)
- html5 worker 实例(二) 图片变换
- HTML5中使用拖拽实例(二)
- HTML5快速入门实例(二)使用Canvas绘制文本
- html5实例
- 免费的HTML5连载来了《HTML5网页开发实例详解》连载(二)
- HTML5(二)
- HTML5(二)
- HTML5画布画图实例
- html5画布实例
- html5手机开发实例
- html5 进度条显示实例
- HTML5 小实例
- HTML5 canvas 小实例
- HTML5 拖动实例
- 创建第二个 local network - 每天5分钟玩转 OpenStack(84)
- 指针
- 勾股定理一日一证连载96
- ThinkPHP Where 条件中使用表达式
- html入门
- HTML5 WebSocketAPI实例(二)
- 09-决策论
- 【opencv练习26 - 仿射变换】
- libnl库资料
- 2016年9月8号
- 【opencv练习27 - 直方图均衡】
- 使用struts2.5版本遇到的问题
- storm如何部署拓扑
- 欢迎使用CSDN-markdown编辑器