HTML5 WebSocket实例(一)
来源:互联网 发布:闪电分期go额度淘宝 编辑:程序博客网 时间:2024/04/29 09:52
1.实例1:
HTML
<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();" />JS
var url = 'ws://localhost:55373/upload1.ashx';var ws = null;//打开链接function openClick() { ws = new WebSocket(url); ws.onopen = function (e) { console.log('链接打开'); ws.send('hello ws'); } ws.onmessage = function (e) { console.info('接受到数据:' + e.data); } ws.onclose = function (e) { //e CloseEvent对象 //e.code 关闭代码编号标识 //e.reason 关闭原因 console.info(e); console.log('链接已经关闭'); } ws.onerror = function (e) { console.info(e); console.log('发生异常:'+e.message); }}//发送function sendClick() { var content = document.getElementById('txt1').value; //如果发送缓冲区没有数据才继续发送 if (ws.bufferedAmount <= 0) { ws.send(content); }}//关闭/** 关闭链接说明,在IE浏览器下还会触发 onerror事件* WebSocket Error: Network Error 12030, 与服务器的连接意外终止*/function closeClick() { //默认关闭代码 1006 ws.close(); ws = null; //Uncaught InvalidAccessError: Failed to execute 'close' on 'WebSocket': The code must be either 1000, or between 3000 and 4999. 1006 is neither. //ws.close(3000,'客户端主动关闭');}Ashx后台代码处理:
public void ProcessRequest(HttpContext context2){ //得到当前WebSocket请求 HttpContext.Current.AcceptWebSocketRequest(async (context) => { WebSocket socket = context.WebSocket;//Socket while (true) { ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[1024]); CancellationToken token; WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, token); if (socket.State == WebSocketState.Open) { string userMessage = Encoding.UTF8.GetString(buffer.Array, 0, result.Count); userMessage = "You sent: " + userMessage + " at " + DateTime.Now.ToLongTimeString(); buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(userMessage)); await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None); } else { break; } } });}2.实例2:
HTML
<input type="text" id="msg" /><input type="button" value="发送消息" onclick="sendMsg();" />JS
var wsServer = 'ws://localhost:55373/upload1.ashx'; //基于.NET4.5服务器地址var websocket = new WebSocket(wsServer); //创建WebSocket对象//websocket.send("hello");//向服务器发送消息 ,在此处发送会抛出异常Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.//alert(websocket.readyState);//查看websocket当前状态websocket.onopen = function (evt) { //已经建立连接 alert("已经建立连接");};websocket.onclose = function (evt) { //已经关闭连接 alert("已经关闭连接");};websocket.onmessage = function (evt) { //收到服务器消息,使用evt.data提取 evt.stopPropagation() evt.preventDefault() writeToScreen(evt.data); //websocket.close();};websocket.onerror = function (evt) { //产生异常 writeToScreen(evt.message);};function sendMsg() { if (websocket.readyState == websocket.OPEN) { msg = document.getElementById("msg").value; websocket.send(msg); writeToScreen("发送成功!"); } else { writeToScreen("链接还没有打开!"); }}function writeToScreen(message) { var pre = document.createElement("p"); pre.style.wordWrap = "break-word"; pre.innerHTML += message; document.body.appendChild(pre);}
后台处理同上。
HTML5 WebSocket API简介
demo源代码
1 0
- HTML5 WebSocket实例(一)
- 初探 HTML5 WebSocket(一)
- HTML5 WebSocket 简单实例
- HTML5 WebSocket实例(三)-文件上传处理
- 一起来用Websocket(一)开篇 Websocket!Socket在HTML5复活
- html5 record 录音实例 使用websocket
- html5+go+websocket简单实例代码
- WebSocket入门教程(四)-- WebSocket实例:实时获取服务器内存使用情况(优化一)
- html5之canvas实例(一)
- 【Html5 WebSocket】WebSocket事件
- html5 websocket
- html5 websocket
- HTML5 WebSocket
- HTML5 webSocket
- HTML5 WebSocket
- html5 websocket
- html5 WebSocket
- html5 websocket
- 生产者与消费者模式
- 10g项目连接12c报:ORA-28040: No matching authentication protocol 错误
- iOS 工程 兼容64位 容易遇到的问题
- 百度推送的一些小问题
- ubuntu 16.04 cuda7.5 nsight + pydev
- HTML5 WebSocket实例(一)
- android中判断服务是否在后台运行的工具类
- 如何实现同一个页面里面两个页面的相互切换(window.onscroll)
- bzoj 2693 jzptab(线性筛预处理+反演)
- csharp: MySQL Stored Procedure using DAL
- KMP算法的前缀next数组最通俗的解释
- 深入理解JVM--JVM垃圾回收机制
- maven spring 软件包org.junit不存在
- 生活在别处