This sample shows you how to send and receive date using the WebSocket classes in the Windows.Networking.Sockets namespace in your Windows Runtime app. The sample covers basic features that include making a WebSocket connection, sending and receiving data, and closing the connection. The sample also shows recommended ways of handling both trusted (hard coded) URI inputs and unvalidated (user-entered) URI inputs.

Note  This sample was created using one of the universal app templates available in Visual Studio. It shows how its solution is structured so it can run on both Windows 8.1 and Windows Phone 8.1. For more info about how to build apps that target Windows and Windows Phone with Visual Studio, see Build apps that target Windows and Windows Phone 8.1 by using Visual Studio.

Windows 8.1 provides support for the client use of WebSockets in a Windows Runtime. The Windows.Networking.Sockets namespace defines two types of WebSocket objects for use by clients in Windows Store apps.

Both MessageWebSocket and StreamWebSocket connections are demonstrated in this sample. This sample shows how to use the following features:

Versions of this sample are provided in JavaScript, C#, VB, and C++.

To obtain an evaluation copy of Windows 8.1, go to Windows 8.1.

To obtain an evaluation copy of Microsoft Visual Studio 2013, go to Visual Studio 2013.

Note  For Windows 8 app samples, download the Windows 8 app samples pack. The samples in the Windows 8 app samples pack will build and run only on Microsoft Visual Studio 2012.

Note  The Windows version of this sample by default requires network access using the loopback interface.

Network capabilities

This sample requires that network capabilities be set in the Package.appxmanifest file to allow the app to access the network at runtime. These capabilities can be set in the app manifest using Microsoft Visual Studio.

To build the Windows version of the sample, set the following network capabilities:

To build the Windows Phone version of the sample, set the following network capabilities:

For a sample that shows how to use a WebSocket to send and receive data so that the app is always connected and always reachable using background network notifications in a Windows Store app, download the ControlChannelTrigger StreamWebSocket sample.

Related topics

Other resources
Adding support for networking
Connecting with WebSockets
How to configure network capabilities
How to connect with a MessageWebSocket
How to connect with a StreamWebSocket
Windows 8 app samples
Reference
MessageWebSocket
StreamWebSocket
Windows.Networking.Sockets

Related technologies

Windows.Networking.Sockets

Operating system requirements

Client
Windows 8.1
Server
Windows Server 2012 R2
Phone
Windows Phone 8.1

Build the sample

  1. Start Microsoft Visual Studio 2013 Update 2 and select File > Open > Project/Solution.
  2. Go to the directory to which you unzipped the sample. Go to the directory named for the sample, and double-click the Visual Studio 2013 Update 2 Solution (.sln) file.
  3. Follow the steps for the version of the sample you want:
    • To build the Windows version of the sample:

      1. Select WebSocket.Windows in Solution Explorer.
      2. Press Ctrl+Shift+B, or use Build > Build Solution, or use Build > Build HttpClient.Windows.
    • To build the Windows Phone version of the sample:

      1. Select WebSocket.WindowsPhone in Solution Explorer.
      2. Press Ctrl+Shift+B or use Build > Build Solution or use Build > Build WebSocket.WindowsPhone.

Run the sample

The next steps depend on whether you just want to deploy the sample or you want to both deploy and run it.

Deploying the sample

Deploying and running the Windows version of the sample

For the app to attempt a WebSocket connection, this sample requires that a web server is available that supports WebSockets. The web server must also have a WebSocketSample path available to access. The web server must be started before the app is run. The sample includes a PowerShell script that will install and enable IIS on a local computer and enable WebSocket connections. The easiest way to run the sample is to use the provided web server scripts. The PowerShell script that will install IIS on the local computer, create the WebSocketSample folder on the server, copy files to this folder, and enable IIS.

Browse to the Server folder in your sample folder to setup and start the web server. There are two options possible.

When the web server is not needed anymore, please browse to the Server folder in you sample folder and run one of the following:

The sample can run using any web server, not only the one provided with the sample. If IIS is used on a different computer, then the previous scripts can be used with minor changes.

The sample must also be updated when run against a non-localhost web server. To configure the sample for use with IIS on a different device:

Note  IIS is not available on ARM builds nor on Windows Phone. Instead, set up the web server on a separate 64-bit or 32-bit computer and follow the steps for using the sample against non-localhost web server.

However if a server different than IIS is used, then this requires some special configuration of the server.

To configure the sample for use with a web server different than IIS not using localhost:

Deploying and running the Windows Phone version of the sample

IIS is not available on Windows Phone. For the app to attempt a WebSocket connection to a server that supports WebSockets , there are two options: