linux C语言使用websocket与前端js交互
时间: 2023-12-31 17:04:23 浏览: 75
在 Linux 下使用 C 语言与前端 JavaScript 交互,可以使用 WebSocket 协议。WebSocket 是一种双向通信协议,它可以让客户端和服务器之间进行实时通信,而不需要像 HTTP 协议一样每次发送请求都要重新建立连接。
以下是一个基本的示例,展示了如何在 C 语言中使用 WebSocket 与前端 JavaScript 进行交互:
1. 首先,你需要使用 C 语言编写一个 WebSocket 服务器。可以使用第三方库,如 libwebsockets 来实现。这个库提供了一个简单的 API,可以轻松地创建 WebSocket 服务器。
2. 在前端,你需要使用 JavaScript 中的 WebSocket 对象来连接服务器。可以使用浏览器内置的 WebSocket 对象,也可以使用第三方库,如 socket.io。
3. 当客户端连接到服务器后,可以使用 WebSocket 对象的 onmessage 事件来监听来自服务器的消息。当有消息到达时,可以使用 JavaScript 处理它并将其显示在网页上。
4. 同样地,在 C 语言中,你也可以使用 libwebsockets 库来处理来自客户端的消息。在服务器端,可以使用 lws_callback_on_writable 函数来将消息发送回客户端。
下面是一个简单的示例代码,展示了如何在 C 语言中使用 WebSocket 与前端 JavaScript 进行交互:
server.c:
```c
#include <libwebsockets.h>
static int callback(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
{
switch (reason) {
case LWS_CALLBACK_ESTABLISHED:
printf("Client connected\n");
break;
case LWS_CALLBACK_RECEIVE:
printf("Received message: %s\n", (char *) in);
// Send response back to client
lws_write(wsi, (unsigned char *) "Hello from server!", 19, LWS_WRITE_TEXT);
break;
default:
break;
}
return 0;
}
int main(int argc, char *argv[])
{
struct lws_context_creation_info info;
struct lws_context *context;
struct lws_protocols protocols[] = {
{ "websocket", callback, 0, 128 },
{ NULL, NULL, 0, 0 }
};
memset(&info, 0, sizeof(info));
info.port = 3000;
info.protocols = protocols;
context = lws_create_context(&info);
if (!context) {
printf("Failed to create WebSocket context\n");
return -1;
}
printf("WebSocket server running on port 3000...\n");
while (1) {
lws_service(context, 1000);
}
lws_context_destroy(context);
return 0;
}
```
index.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Example</title>
</head>
<body>
<h1>WebSocket Example</h1>
<p id="message"></p>
<script>
var socket = new WebSocket("ws://localhost:3000/websocket");
socket.onmessage = function(event) {
console.log("Received message: " + event.data);
document.getElementById("message").innerHTML = event.data;
};
socket.onopen = function(event) {
console.log("Connected to server");
};
</script>
</body>
</html>
```
在该示例中,C 语言的 WebSocket 服务器在本地端口 3000 上运行。当客户端连接到服务器时,服务器将发送一个欢迎消息。然后,它将等待来自客户端的消息,并将其发送回客户端。在前端,JavaScript 将使用 WebSocket 对象连接到服务器,并监听来自服务器的消息。当有消息到达时,JavaScript 将在网页上显示它。
注意:这只是一个基本示例,实际应用中可能需要更复杂的逻辑和功能。
阅读全文