WebSocket 基础使用

1.基本概念

WebSocket 支持双方通信即服务端可以主动推送给用户端,用户端也可以主动推送消息给服务器。前端必须进行协议升级为 WebSocket

名称
Upgrade websocket

 2. 后端代码

package com.koshi.websocket.server;
 
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
 
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
@Component
@Slf4j
@ServerEndpoint("/api/pushMessage/{userId}")
public class WebSocketServer {
    /**静态变量,用来记录当前在线连接数*/
    private static final AtomicInteger onlineCount = new Ato
WebSocket是一种基于TCP协议实现的全双工通信协议,它可以在客户端和服务器之间建立一个实时的双向通信通道。Python中有许多库可以用来创建WebSocket服务器和客户端,常用的有`websocket`和`autobahn`等。 下面是一个简单的WebSocket服务端的示例代码: ```python import asyncio import websockets async def echo(websocket, path): async for message in websocket: await websocket.send(message) start_server = websockets.serve(echo, "localhost", 8765) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever() ``` 这个例子中,我们使用了`websockets`库来创建一个WebSocket服务器,并定义了一个`echo`函数来处理客户端发送的消息。在这个函数中,我们使用`async for`循环来获取客户端发送的消息,并调用`await websocket.send(message)`方法将消息原样返回给客户端。 要启动这个服务端,只需要执行上面的代码即可。 如果要创建一个WebSocket客户端,可以使用`websockets`库中的`connect`方法来连接WebSocket服务器,示例代码如下: ```python import asyncio import websockets async def hello(): async with websockets.connect( 'ws://localhost:8765') as websocket: name = input("What's your name? ") await websocket.send(name) print(f"> {name}") greeting = await websocket.recv() print(f"< {greeting}") asyncio.get_event_loop().run_until_complete(hello()) ``` 在这个例子中,我们使用`async with`语句来创建一个WebSocket连接,并使用`await websocket.send(message)`方法发送消息给服务器。然后使用`await websocket.recv()`方法接收服务器返回的消息。 以上是Python中使用WebSocket的一些基础知识,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值