mfc 通过websocket 发送接受cjson?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mfc 通过websocket 发送接受cjson?相关的知识,希望对你有一定的参考价值。

通过mfc websocket 实现通讯,然后发送接受 cjson 字符串 应该怎么做啊

直接调用websocket的消息发送函数进行发送json格式的字符串就可以的。
json格式参考:

"employees": [

"firstName": "Bill",
"lastName": "Gates"
,

"firstName": "George",
"lastName": "Bush"
,

"firstName": "Thomas",
"lastName": "Carter"

]

我们项目目前使用的【GoEasy】提供的websocket推送服务,目前就支持发送json格式的字符串。
参考技术A WebSocket protocol 是html5一种新的协议,它实现了浏览器与服务器全双工通信(full-duple)。刚开始的握手需要借助HTTP请求完成,在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后浏览器和服务器之间就形成了一条快速通道,两者之间就直接可以数据互相传送。 参考技术B 通过websocket 发送接受cjson
试试代码

ws.onmessage = function(evt)
var str = evt.data;
console.log(str.cahe_flux);
;
参考技术C 完全看不懂,请详细描述问题

如何配置 WebSocket 服务器以接受安全连接请求

【中文标题】如何配置 WebSocket 服务器以接受安全连接请求【英文标题】:How to Configure WebSocket Server to Accept Secure Connection Request 【发布时间】:2019-03-11 07:51:43 【问题描述】:

在应用 ssl(我从 cloudflare 获取)之前,我的网站是通过 http 加载的,我的套接字连接是通过 ws 建立的 它工作正常,连接成功。

conn = new WebSocket('ws://myDomain:8090');

但是当我的网站通过 https 加载时应用 ssl 后,我使用 wss(否则会出错)

conn = new WebSocket('wss://myDomain:8090');

现在它给了我错误

到 'wss://myDomain:8090/' 的 WebSocket 连接失败:连接建立错误:net::ERR_CONNECTION_TIMED_OUT

websocket 服务器通过 8090 端口启动,我也将端口更改为 9991,但无济于事。

这里是 websocket 服务器的代码

public function handle()

    $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new WebSocketController()
            )
        ),
        8090
    );
    $server->run();

我没有将 apache 配置为运行 websocket 服务器来接受安全连接请求。可能是由于这个原因,我收到了一个错误。这意味着我正在向不安全的 websocket 服务器发送安全连接请求。如果我是对的,你能告诉我如何配置我的 websocket 服务器,以便它可以接受安全连接请求。

我再次告诉您,我正在使用来自 cloudflare 的 SSL。 我告诉我我的域,他们为我提供了名称服务器,以用我现有的名称服务器替换它。

我要求你给出一个明确的解决方案来解决这个问题。 我没有使用 nginx,我在 Lampp 上使用的是 apache。

【问题讨论】:

你的 nginx 配置是什么样的?您确定您通过安全连接提供服务吗? 我没有安装 nginx,我在 Lampp 上使用的是 apache。 好的......你在你的问题中提到了 nginx,所以我认为你正在使用它。您如何配置 apache 以接受安全的 websocket 连接? 我不做任何配置。我认为我的 websocket 服务器只能接受不安全的 websocket 连接。你能告诉我如何进行这些配置,以便我的 websocket 服务器可以接受安全连接。 查看已编辑的问题。您可以在代码片段后查看更多信息。见最后三段。 【参考方案1】:

有人解决了我的问题。所以我在这里发布解决方案来帮助其他人。我犯了两个错误。

我正在使用来自 cloudflare 的 SSL,这会导致一些问题。所以我买了一个付费的 SSL 证书。 我没有为 wss 配置我的 websocket 服务器

下面是使用 Ratchet 在 Laravel 中为 wss 配置 websocket 服务器的代码

public function handle()


    $loop   = Factory::create();
    $webSock = new SecureServer(
        new Server('0.0.0.0:8090', $loop),
        $loop,
        array(
            'local_cert'        => '', // path to your cert
            'local_pk'          => '', // path to your server private key
            'allow_self_signed' => TRUE, // Allow self signed certs (should be false 
                                            in production)
            'verify_peer' => FALSE
        )
    );
    // Ratchet magic
    $webServer = new IoServer(
        new HttpServer(
            new WsServer(
                new WebSocketController()
            )
        ),
        $webSock
    );
    $loop->run();


【讨论】:

【参考方案2】:

Cloudflare 不适用于端口 8090,here 是 cloudflare 支持的端口列表。

也可以试试http://sitemeer.com/#https://yourDomain:8090 看看你的服务器+域是否在服务ssl

【讨论】:

以上是关于mfc 通过websocket 发送接受cjson?的主要内容,如果未能解决你的问题,请参考以下文章

初识Websocket

mfc中,怎么把一个窗口的编辑框内容调用到另一个窗口的控件里

使用原始 WebSocket 时如何知道消息是不是已成功发送?

通过串口接受的指令点亮LED

关于websocket

微信小程序webSocket多人通信案例