连接到套接字.IO服务器从c++应用程序
Connecting to socket.io server from c++ application
我正在尝试为我的基于web的应用程序做poc,我有以下
1)一个基本的node.js/socket。基于io的LINUX服务器,提供基本的网页作为客户端
client.html
<!DOCTYPE html>
<html>
<head>
<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect("169.xxx.xxx.xx:5000");
socket.on("aServerEvent", function(data)
{
document.getElementById("chatlog").innerHTML = ("<hr/>" +
data['message'] + document.getElementById("chatlog").innerHTML);
});
function sendMessage()
{
var msg = document.getElementById("message_input").value;
socket.emit("aClientEvent", { message : msg});
}
</script>
</head>
<body>
<input type="text" id="message_input"/>
<button onclick="sendMessage()">send</button>
<div id="chatlog"></div>
</body>
</html>
server.js
var app = require('http').createServer(handler),
io = require('socket.io').listen(app),
fs = require('fs')
app.listen(5000,'169.xxx.xxx.xx');
function handler (req, res)
{
fs.readFile("client.html", function (err, data)
{
if (err)
{
res.writeHead(500);
return res.end('Error loading client.html');
}
res.writeHead(200);
res.end(data);
});
}
console.log('Server running at http://169.xxx.xxx.xx:5000/');
io.sockets.on('connection', function(socket)
{
socket.on('aClientEvent', function(data)
{
var newData = "serverResponse: " + data["message"].toUpperCase();
io.sockets.emit("aServerEvent", { message: newData });
});
});
到目前为止,我在网页(客户端)上输入一个文本,由服务器读取,返回大写文本作为确认。
2)现在我想在linux上写一个基本的c++程序,使用websocketpp与我的node.js/socket建立一个基于websocket的连接。IO服务器
如何在node.js服务器和c++应用程序(基于websocketpp)之间建立基于websocket的连接?
我找到的最接近的匹配是…
https://github.com/ebshimizu/socket.io-clientpp
(但是使用rapidjson,我只想使用libjson)
https://github.com/uning/socket.io-client-cpp
(这看起来像原始websocketpp库的修改版本,并且在SRC中有很多文件,如果它们都是必需的,这让我感到困惑)
任何指针将不胜感激
Thanks in advance
现在套接字。io也有c++客户端。看这里https://github.com/socketio/socket.io-client-cpp还有一篇博客文章提供了完整的聊天示例http://socket.io/blog/socket-io-cpp/
由于您运行的是Linux,因此应该有相应的包。我看了看Debian和websocketpp-dev会是你需要的。试试yum search websocketpp
或apt-get search websocketpp
,然后安装dev/dev包。
文档可以在这里找到:http://doxygen.websocketpp.org/annotated.html
我希望这就是你想要的。
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?