写个websocket的demo
时间: 2023-06-06 21:05:32 浏览: 53
好的,我可以帮您编写一个WebSocket的简单Demo,您需要先安装Node.js和WebSocket模块,然后可以按照以下代码进行编写:
```
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
ws.send('Hello, I am WebSocket server!');
});
ws.send('Welcome to WebSocket server!');
});
```
这个Demo建立了一个WebSocket服务并监听8080端口,当有客户端连接到服务时,服务器会发送一个欢迎消息。您可以在客户端使用WebSocket API进行连接,并通过发送消息与服务端进行交互。希望这个Demo能帮到您!
相关问题
如何写一个websocket的demo
要写一个WebSocket的Demo,你需要以下步骤:
1. 创建 WebSocket 服务器
首先,你需要使用一个 WebSocket 服务器来处理 WebSocket 连接。你可以使用 Node.js 的 `ws` 模块或者 Python 的 `websockets` 模块创建 WebSocket 服务器。在这里,我们使用 Node.js 和 `ws` 模块为例:
```javascript
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', (socket) => {
console.log('Client connected');
socket.on('message', (message) => {
console.log(`Received message: ${message}`);
socket.send(`You sent: ${message}`);
});
socket.on('close', () => {
console.log('Client disconnected');
});
});
```
在这个例子中,我们创建了一个 WebSocket 服务器,并在客户端连接时打印一条消息。当服务器接收到客户端发送的消息时,它会将消息发送回客户端。当客户端断开连接时,服务器会打印一条消息。
2. 创建 WebSocket 客户端
接下来,我们需要创建一个 WebSocket 客户端来连接到服务器。你可以使用 JavaScript 的 `WebSocket` 对象或者浏览器提供的 `WebSocket` 对象来创建 WebSocket 客户端。在这里,我们使用浏览器提供的 `WebSocket` 对象为例:
```javascript
const socket = new WebSocket('ws://localhost:8080');
socket.onopen = () => {
console.log('Connected to server');
socket.send('Hello, server!');
};
socket.onmessage = (event) => {
console.log(`Received message: ${event.data}`);
};
socket.onclose = () => {
console.log('Disconnected from server');
};
```
在这个例子中,我们创建了一个 WebSocket 客户端,并在连接到服务器时打印一条消息。当客户端发送消息到服务器时,它会将服务器返回的消息打印到控制台。当客户端断开连接时,它会打印一条消息。
现在,你已经成功地创建了一个 WebSocket 的 Demo,它可以让你与服务器进行双向通信。
.net websocket demo
.NET WebSocket是一种在Web应用程序中实现双向通信的技术。它允许服务器和客户端之间进行实时的数据传输,而无需进行轮询或刷新页面。下面是一个简单的.NET WebSocket示例:
1. 创建WebSocket服务器:
```csharp
using System;
using System.Net;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
public class WebSocketServer
{
private HttpListener _listener;
private CancellationTokenSource _cancellationTokenSource;
public async Task Start(string url)
{
_listener = new HttpListener();
_listener.Prefixes.Add(url);
_listener.Start();
_cancellationTokenSource = new CancellationTokenSource();
while (!_cancellationTokenSource.Token.IsCancellationRequested)
{
HttpListenerContext context = await _listener.GetContextAsync();
if (context.Request.IsWebSocketRequest)
{
ProcessWebSocketRequest(context);
}
else
{
context.Response.StatusCode = 400;
context.Response.Close();
}
}
}
private async void ProcessWebSocketRequest(HttpListenerContext context)
{
HttpListenerWebSocketContext webSocketContext = await context.AcceptWebSocketAsync(null);
WebSocket webSocket = webSocketContext.WebSocket;
byte[] buffer = new byte[1024];
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
while (!result.CloseStatus.HasValue)
{
string message = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
Console.WriteLine($"Received message: {message}");
// 处理接收到的消息
result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
}
await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
}
public void Stop()
{
_cancellationTokenSource.Cancel();
_listener.Stop();
_listener.Close();
}
}
```
2. 创建WebSocket客户端:
```csharp
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
public class WebSocketClient
{
private ClientWebSocket _webSocket;
public async Task Connect(string url)
{
_webSocket = new ClientWebSocket();
await _webSocket.ConnectAsync(new Uri(url), CancellationToken.None);
await Task.WhenAll(ReceiveLoop(), SendLoop());
}
private async Task ReceiveLoop()
{
byte[] buffer = new byte[1024];
while (_webSocket.State == WebSocketState.Open)
{
WebSocketReceiveResult result = await _webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
string message = Encoding.UTF8.GetString(buffer, 0, result.Count);
Console.WriteLine($"Received message: {message}");
}
}
private async Task SendLoop()
{
while (_webSocket.State == WebSocketState.Open)
{
string message = Console.ReadLine();
byte[] buffer = Encoding.UTF8.GetBytes(message);
await _webSocket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
}
}
public async Task Disconnect()
{
await _webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Disconnect", CancellationToken.None);
_webSocket.Dispose();
}
}
```
3. 使用WebSocket服务器和客户端:
```csharp
using System;
using System.Threading.Tasks;
public class Program
{
public static async Task Main(string[] args)
{
string serverUrl = "http://localhost:8080/";
string clientUrl = "ws://localhost:8080/";
WebSocketServer server = new WebSocketServer();
WebSocketClient client = new WebSocketClient();
Task serverTask = server.Start(serverUrl);
Task clientTask = client.Connect(clientUrl);
await Task.WhenAll(serverTask, clientTask);
server.Stop();
}
}
```
这是一个简单的.NET WebSocket示例,它创建了一个WebSocket服务器和一个WebSocket客户端,并实现了基本的消息收发功能。你可以根据自己的需求进行扩展和修改。