1.什么是
websocket
对于传统的web开发而言,是前台发送请求,后端接口返回对应的
数据。但是在爬虫网页项目中当用户在页面上发送爬取请求之后,这个时候如果是传统的ajax请求,则前台就会阻塞,并且我们需要后台实时的通知用户现在爬虫的爬取进度。为了完成这一系列的交互功能,我们就需要使用
websocket。
websocket本质上就是一种协议,这种协议可以允许服务端主动给客户端客户端推送
数据,在与vue相结合之后可以
实现实时的
数据刷新与展示效果。
2.如何在
aiohttp中使用
websocket
一个客户端库,带有用于浏览器和Node.js的基于的API。
import
WebSocketAsPromised from '
websocket-as-promised' ;
const wsp = new
WebSocketAsPromised ( 'ws://example.com' ) ;
await wsp . open ( ) ;
wsp . send ( 'message' ) ;
await wsp . close ( ) ;
全球Promise构造函数
npm i
websocket-as-promised --save
码头工人网络创建后端docker run -d --name postgres --network后端chaowenguo / postgres docker run -d --name redis-网络后端redis docker run -d --name web --network后端chaowenguo / aiohttp docker run -d --name chat --network后端chaowenguo / chat:aiohttp docker run -d --name nginx --network backend -p 443:443 -v /etc/letsencrypt/archive/chaowenguo.eu.org:/encrypt:ro chaowenguo / nginx
回购public_repo
管理员创建项目开发人员添加数据库Post
为了让
数据的传输更加稳定,采取的策略是用
Python当作
websocket服务器C#端当作客户端来进行。
C# 上需要安装上
WebSocketSharp插件
// See https://aka.ms/new-console-template for more information
using System;
using
WebSocketSharp;
using System.Text.
Json;
namespace
WebSocket_Demo
class Program
2. 客户端连接成功后,服务器端会创建一个
WebSocket会话对象,可以通过该对象向客户端发送消息。
3. 在Java中,可以使用
JSON库来生成和解析
JSON数据。例如,使用Gson库可以将Java对象转换为
JSON字符串,或将
JSON字符串转换为Java对象。
4. 在服务器端,可以使用
WebSocket会话对象的getBasicRemote()方法获取一个RemoteEndpoint.Basic对象,通过该对象可以向客户端发送消息。
5. 在客户端,可以使用JavaScript的
WebSocket API来连接
WebSocket服务器,并通过
WebSocket对象的send()方法发送消息。接收到消息后,可以通过
WebSocket对象的onmessage()方法处理消息。
下面是一个简单的Java
WebSocket示例,演示如何发送
JSON数据:
```java
import com.google.gson.Gson;
import javax.
websocket.*;
import javax.
websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@ServerEndpoint("/
websocket")
public class
WebSocketServer {
private static Map<Session, String> clients = new HashMap<>();
@OnOpen
public void onOpen(Session session) {
System.out.println("
WebSocket opened: " + session.getId());
clients.put(session, "");
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("
WebSocket message received: " + message);
Gson gson = new Gson();
Message msg = gson.from
Json(message, Message.class);
clients.put(session, msg.getUsername());
broadcast(gson.to
Json(msg));
@OnClose
public void onClose(Session session) {
System.out.println("
WebSocket closed: " + session.getId());
clients.remove(session);
@OnError
public void onError(Throwable error) {
System.out.println("
WebSocket error: " + error.getMessage());
private void broadcast(String message) {
for (Session session : clients.keySet()) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
private static class Message {
private String username;
private String content;
public String getUsername() {
return username;
public void setUsername(String username) {
this.username = username;
public String getContent() {
return content;
public void setContent(String content) {
this.content = content;
在上面的示例中,我们定义了一个
WebSocket服务器端,监听"/
websocket"路径的连接请求。当客户端连接成功后,服务器端会创建一个
WebSocket会话对象,并将其保存到clients集合中。当客户端发送消息时,服务器端会将消息解析为一个Message对象,并将其转换为
JSON字符串,然后通过
WebSocket会话对象的getBasicRemote()方法向所有客户端发送消息。当客户端断开连接时,服务器端会将其从clients集合中移除。
在客户端,可以使用以下代码连接
WebSocket服务器,并发送
JSON数据:
```javascript
var socket = new
WebSocket("ws://localhost:808/
websocket");
socket.onopen = function(event) {
console.log("
WebSocket opened");
socket.onmessage = function(event) {
console.log("
WebSocket message received: " + event.data);
var msg =
JSON.parse(event.data);
// 处理接收到的消息
socket.onclose = function(event) {
console.log("
WebSocket closed");
socket.onerror = function(event) {
console.log("
WebSocket error: " + event.message);
function sendMessage(username, content) {
var msg = {
username: username,
content: content
socket.send(
JSON.stringify(msg));
在上面的代码中,我们使用
WebSocket API连接
WebSocket服务器,并定义了四个事件处理函数:onopen、onmessage、onclose和onerror。当
WebSocket连接成功时,会调用onopen函数;当接收到消息时,会调用onmessage函数;当
WebSocket连接关闭时,会调用onclose函数;当
WebSocket发生错误时,会调用onerror函数。我们还定义了一个sendMessage函数,用于向服务器发送
JSON数据。在接收到消息时,我们可以通过
JSON.parse()方法将
JSON字符串解析为JavaScript对象,然后进行处理。
希望这个示例能够帮助你
实现Java
WebSocket发送
JSON数据,并在前端JavaScript接收
JSON数据的功能。