热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

html发送websocket,如何使用MessageWebSocket进行连接(HTML)

如何使用MessageWebSocket进行连接(HTML)12112015本文内容[本文适用于编写Windows运行时应用的Windows8.x和WindowsPhone8.x开

如何使用 MessageWebSocket 进行连接 (HTML)

12/11/2015

本文内容

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

本主题向你展示 如何使用 Windows 运行时应用中的 MessageWebSocket 发送和接收整个数据消息。

MessageWebSocket 类提供了 WebSocket 协议基于消息的抽象。使用 MessageWebSocket 时,可以在单个操作中读取或写入整个 WebSocket 消息。相比之下,StreamWebSocket 允许使用每个读取操作读取消息各部分,而不是要求在单个操作中读取整个消息。

MessageWebSocket 通常用于消息不是非常大的情况。UTF-8 和二进制文件均受支持。对于 UTF-8 消息,必须使用 MessageWebSocket。因为 StreamWebSocket 仅支持二进制消息。

先决条件

以下示例使用 Javascript,且基于 WebSocket 示例。 有关创建使用 Javascript 的 Windows 运行时应用的常规帮助,请参阅创建你的第一个使用 Javascript 的 Windows 运行时应用。此外,在本主题中使用 Javascript Promise 来完成异步操作。有关此编程模式的详细信息,请参阅在 Javascript 中使用 Promise 进行异步编程。

为了使你的 Windows 运行时应用能够使用网络,你必须设置在项目 Package.appxmanifest 文件中所需的任何网络功能。 如果你的应用需要作为客户端连接到 Internet 上的远程服务,则“Internet (客户端)”功能是必需的。如果应用需要作为客户端连接到家庭网络或工作网络上的远程服务,则“家庭/工作网络”****功能是必需的。

注意  在 Windows Phone 上,只存在一种网络功能(“Internet (客户端和服务器)”),该功能支持对该应用的所有网络访问。

有关详细信息,请参阅如何设置网络功能。

使用 MessageWebSocket 发送数据

此部分中的代码将创建一个新 MessageWebSocket,连接到 WebSocket 服务器,然后将数据发送到服务器。在成功建立连接后,应用将等待调用 MessageWebSocket.MessageReceived 事件,从而指示已接收数据。

注意  你可能想要向用户显示消息或者包含已发生事件的日志(例如,发起连接或发生错误时)。

打开 js 文件夹。打开你的 .js 文件并添加以下代码。

function startSend() {

if (!messageWebSocket) {

var webSocket = new Windows.Networking.Sockets.MessageWebSocket();

// MessageWebSocket supports both utf8 and binary messages.

// When utf8 is specified as the messageType, then the developer

// promises to only send utf8-encoded data.

webSocket.control.messageType = Windows.Networking.Sockets.SocketMessageType.utf8;

// Set up callbacks

webSocket.onmessagereceived = onMessageReceived;

webSocket.onclosed = onClosed;

var serverAddress = new Windows.Foundation.Uri(document.getElementById("serverAddress").value);

try {

webSocket.connectAsync(serverAddress).done(function () {

messageWebSocket = webSocket;

// The default DataWriter encoding is utf8.

messageWriter = new Windows.Storage.Streams.DataWriter(webSocket.outputStream);

messageWriter.writeString(document.getElementById("inputField").value);

messageWriter.storeAsync().done("", sendError);

}, function (error) {

// The connection failed; add your own code to log or display

// the error, or take a specific action.

});

} catch (error) {

// An error occurred while trying to connect; add your own code to

// log or display the error, or take a specific action.

}

}

else {

// The connection already exists; go ahead and send the message.

messageWriter.writeString(document.getElementById("inputField").value);

messageWriter.storeAsync().done("", sendError);

}

}

为 MessageWebSocket.MessageReceived 事件注册回调

将以下代码添加到 .js 文件中。

function onMessageReceived(args) {

// The incoming message is already buffered.

var dataReader = args.getDataReader();

// Use the dataReader to read data from the received message

}

为 MessageWebSocket.Closed 事件注册回调

将以下代码添加到 .js 文件中。

function onClosed(args) {

// You can add code to log or display the code and reason

// for the closure (stored in args.code and args.reason)

if (messageWebSocket) {

messageWebSocket.close();

}

messageWebSocket = null;

}

摘要和后续步骤

在本教程中,我们已了解如何连接到 WebSocket 服务器以及如何使用 MessageWebSocket 发送和接收数据。

有关展示如何使用 WebSockets 发送和接收数据的完整示例,请参阅 WebSocket 示例。

相关主题

其他

参考

示例



推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
author-avatar
王诗昀彦廷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有