1 | // -----------------------------------------------------------------------
|
---|
2 | // <copyright file="WebSocketMessageExtensions.cs" company="Microsoft">
|
---|
3 | // Copyright (c) Microsoft Corporation. All rights reserved.
|
---|
4 | // </copyright>
|
---|
5 | // -----------------------------------------------------------------------
|
---|
6 |
|
---|
7 | namespace Microsoft.Samples.Kinect.Webserver
|
---|
8 | {
|
---|
9 | using System;
|
---|
10 | using System.IO;
|
---|
11 | using System.Net.WebSockets;
|
---|
12 |
|
---|
13 | /// <summary>
|
---|
14 | /// Static class that defines extensions used to serialize objects into web socket messages.
|
---|
15 | /// </summary>
|
---|
16 | public static class WebSocketMessageExtensions
|
---|
17 | {
|
---|
18 | /// <summary>
|
---|
19 | /// Serializes object as a UTF8-encoded JSON string and creates a web socket message to
|
---|
20 | /// be sent over the wire.
|
---|
21 | /// </summary>
|
---|
22 | /// <typeparam name="T">
|
---|
23 | /// Type of object to serialize and send as a message.
|
---|
24 | /// </typeparam>
|
---|
25 | /// <param name="obj">
|
---|
26 | /// Object to serialize and send as a message.
|
---|
27 | /// </param>
|
---|
28 | /// <returns>
|
---|
29 | /// Web socket message ready to be sent.
|
---|
30 | /// </returns>
|
---|
31 | public static WebSocketMessage ToTextMessage<T>(this T obj)
|
---|
32 | {
|
---|
33 | using (var stream = new MemoryStream())
|
---|
34 | {
|
---|
35 | obj.ToJson(stream);
|
---|
36 | return new WebSocketMessage(new ArraySegment<byte>(stream.GetBuffer(), 0, (int)stream.Length), WebSocketMessageType.Text);
|
---|
37 | }
|
---|
38 | }
|
---|
39 |
|
---|
40 | /// <summary>
|
---|
41 | /// Takes an array of bytes representing UTF8-encoded text and creates a web socket message
|
---|
42 | /// to be sent over the wire.
|
---|
43 | /// </summary>
|
---|
44 | /// <param name="textData">
|
---|
45 | /// Array of bytes representing UTF8-encoded text.
|
---|
46 | /// </param>
|
---|
47 | /// <returns>
|
---|
48 | /// Web socket message ready to be sent.
|
---|
49 | /// </returns>
|
---|
50 | public static WebSocketMessage ToTextMessage(this byte[] textData)
|
---|
51 | {
|
---|
52 | return new WebSocketMessage(new ArraySegment<byte>(textData), WebSocketMessageType.Text);
|
---|
53 | }
|
---|
54 |
|
---|
55 | /// <summary>
|
---|
56 | /// Takes an array of bytes representing binary data and creates a web socket message
|
---|
57 | /// to be sent over the wire.
|
---|
58 | /// </summary>
|
---|
59 | /// <param name="data">
|
---|
60 | /// Array of bytes representing binary data.
|
---|
61 | /// </param>
|
---|
62 | /// <returns>
|
---|
63 | /// Web socket message ready to be sent.
|
---|
64 | /// </returns>
|
---|
65 | public static WebSocketMessage ToBinaryMessage(this byte[] data)
|
---|
66 | {
|
---|
67 | return new WebSocketMessage(new ArraySegment<byte>(data), WebSocketMessageType.Binary);
|
---|
68 | }
|
---|
69 | }
|
---|
70 | }
|
---|