永发信息网

如何使用 MessageWebSocket 进行连接

答案:1  悬赏:80  手机版
解决时间 2021-04-06 23:42
如何使用 MessageWebSocket 进行连接
最佳答案
先决条件:
以下示例使用 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 文件并添加以下代码。
JavaScript
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 事件注册回调
发生 MessageWebSocket.MessageReceived 事件时,会调用所注册的回调并接收来自 MessageWebSocketMessageReceivedEventArgs 的数据。
将以下代码添加到 .js 文件中。
JavaScript
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 事件注册回调
发生 MessageWebSocket.Closed 事件时,会调用所注册的回调并接收来自 WebSocketClosedEventArgs 的数据以关闭连接。
将以下代码添加到 .js 文件中。
JavaScript
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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
79乘以多少等于1610
动漫暗黑系经典语录,求动漫十大经典语句。。
第一套人名币1000元在当时的购买能力是多少,
舰之王超市西区店在什么地方啊,我要过去处理
冬天的诗词,描写冬天的古诗有哪些
蛇是不是都能在水里生活?它们在水下的呼吸器
远征远征中叶迎秋是谁扮演的
迷水桥村地址有知道的么?有点事想过去
四肢无力,不间断头晕,去做了血检尿检,肝功
单选题十届全国人民代表大会四次会议审议并通
5*19.99 +16*1.999 +0.34*199.9
安卓微信步数怎么设置,微信运动怎么计算步数
以梦、霞、只、爱、嘉、成 6个字以开头作诗。
苏州浒关到苏州汽车站南站
买天狮的一份产品2800元等于投资了一份事业可
推荐资讯
同乐面馆地址在什么地方,想过去办事
33. Nowadays people in the city enjoy a o
看图写话嗯我熟悉的一种动物啊二十到三十字吧
既能一边玩游戏,又能看电影的怎么弄,手机
证明集合S={ (x,y) 属于 R^2, 0<x<1 } 是 R^2
假设阶码、尾数均为 5 位(含符号位),求二
一条木方厚20毫米,长1000毫米,宽100毫米组
表达菜难吃的语句,有哪些形容饭菜难吃的成语
某同学在探究凸透镜成像的实验中,蜡烛到透镜
求孝道两个字的瘦金体
北京艾沃迪科技有限公司怎么样?
女高跟凉鞋
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?