WebSocket使用实例

实例效果如下所示:

 

使用node创建服务端程序,首先要安装node环境。

然后安装WebSocket依赖包,安装WebSocket依赖包的命令为:

npm i ws -S

 包安装好以后创建app.js 作为后端服务的项目文件,代码如下:


//引入ws包
const WebSocket = require('ws');

//创建WebSoctet.Server对象
const wss = new WebSocket.Server({
    port: 1111
});

//对客户端连接事件进行监听
//client 客户端的连接soctet对象
wss.on('connection', client => {
    console.log("有客户端连接成功");
    //对客户端的message事件进行监听
    //msg 客户端发送给服务端的数据
    client.on('message', msg => {
        console.log("客户端发送数据给服务端了,数据是:" + msg);
        //由服务端向前端发送数据
        client.send("前端你好,我是从后端发送过来的数据.");
    });
});

 

创建一个html文件,作为前端调用页面,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WebSocket实例</title>
</head>

<body>
    <button id="connect">连接服务端</button>
    <button id="send" disabled="true">发送数据</button>
    <br> 从服务端接收的数据如下: <br>
    <span style="color:red" id="result"></span>

    <script>
        var connect = document.querySelector('#connect');
        var send = document.querySelector('#send');
        var result = document.querySelector('#result');

        let ws = null;
        connect.onclick = function() {
            ws = new WebSocket('ws://localhost:1111');
            ws.onopen = () => {
                console.log('连接服务器成功了');
                send.disabled = false;
            }
            ws.onclose = () => {
                console.log('连接服务器失败了');
                send.disabled = true;
            }
            ws.onmessage = (msg) => {
                console.log('接收到服务器发送过来的数据');
                result.innerHTML = msg.data;
            }
        }

        send.onclick = function() {
            ws.send('后端你好,我是从前端发送过来的数据');
        }
    </script>
</body>

</html>

前后端代码都创建好了以后,先启动后端程序,命令行为:

node app.js

 程序启动后,在浏览器中打开html页面,测试程序。

 

具体步骤如下:

 

可以看到服务端和客户端建立连接成功并可以双向发送数据。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用 C++ 和 Boost.Beast 库实现的简单 WebSocket 示例: ```cpp #include <iostream> #include <boost/beast/core.hpp> #include <boost/beast/websocket.hpp> #include <boost/asio/ip/tcp.hpp> namespace beast = boost::beast; namespace http = beast::http; namespace websocket = beast::websocket; namespace net = boost::asio; using tcp = net::ip::tcp; int main() { try { net::io_context io_context; // Connect to the server tcp::resolver resolver(io_context); auto const results = resolver.resolve("echo.websocket.org", "80"); websocket::stream<tcp::socket> ws(io_context); net::connect(ws.next_layer(), results); // Set a decorator to change the User-Agent of the handshake ws.set_option(websocket::stream_base::decorator([](websocket::request_type& req) { req.set(http::field::user_agent, std::string(BOOST_BEAST_VERSION_STRING) + " websocket-client-coro"); })); // Perform the websocket handshake ws.handshake("echo.websocket.org", "/"); // Send a message to the server ws.write(net::buffer(std::string("Hello, world!"))); // Receive a message from the server beast::flat_buffer buffer; ws.read(buffer); std::cout << beast::make_printable(buffer.data()) << std::endl; // Close the WebSocket connection ws.close(websocket::close_code::normal); return 0; } catch (const std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; return 1; } } ``` 在上面的代码中,我们使用 Boost.Beast 库来实现 WebSocket 客户端。我们首先创建一个 `io_context` 对象,然后使用 `tcp::resolver` 解析服务器的地址和端口号。接下来,我们创建一个 `websocket::stream` 对象,并使用 `net::connect` 连接到服务器。 我们设置一个装饰器来更改握手的 User-Agent。然后,我们调用 `ws.handshake` 方法来执行 WebSocket 握手。一旦握手成功,我们就可以使用 `ws.write` 方法将消息发送到服务器,并使用 `ws.read` 方法从服务器接收消息。最后,我们使用 `ws.close` 方法关闭 WebSocket 连接。 注意:在使用 Boost.Beast 库时,需要将其添加到项目依赖中,并在编译选项中添加 `-lboost_system` 和 `-lboost_thread`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值