Compile, link and execute some simple demos of libwebsockets 3.1 with VS 2010 on Windows 7 (3)

本文详细介绍如何在'lws-demos'目录下创建并运行一个简易的WebSocket回声服务器。通过修改必要的源文件和编译设置,使用Makefile进行编译,最终运行服务器并测试其功能。同时,介绍了一个简单的客户端HTML页面,用于测试服务器的回声功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Example 3: minimal websocket echo server
    A minimal websocket echo server demo is put into the directory 'minimal-examples\ws-server\minimal-ws-server-echo'.

    Create a subfolder 'minimal-ws-server-echo' below the directory 'lws-demos'. Copy such files to the path 'lws-demos\minimal-ws-server-echo': minimal-ws-server-echo.c, protocol_lws_minimal_server_echo.c, websockets.dll, libcrypto-1_1.dll, libssl-1_1.dll.
    Errors will be reported if compilation is done directly. The file 'protocol_lws_minimal_server_echo.c' and 'lws-demos\include\libwebsockets\lws-protocols-plugins.h' should be modified as follows:


1. Add

#include "libwebsockets/lws-protocols-plugins.h"

to the beginning of the file 'protocol_lws_minimal_server_echo.c', just before the line #include <string.h>;


2. Add the following programming statements to the file 'lws-demos\include\libwebsockets\lws-protocols-plugins.h' in order to prevent the header file from being included multiple times.
   Add to the beginning of the file:

#ifndef HEADER_LWS_PROTOCOLS_PLUGINS_H
  #define HEADER_LWS_PROTOCOLS_PLUGINS_H

   Add to the endo of the file:

#endif

3. Search the programming statement of #ifdef LWS_WITH_PLUGINS in the file 'lws-demos\include\libwebsockets\lws-protocols-plugins.h', and add the macro definition to the line before that statement:

#define LWS_WITH_PLUGINS

    Use any text editor to create a file named by 'Makefile'. Its content is:

SRC=minimal-ws-server-echo.c protocol_lws_minimal_server_echo.c
OBJ=minimal-ws-server-echo.obj protocol_lws_minimal_server_echo.obj
PROG=minimal-ws-server-echo.exe

CFLAGS=/I "../include" /I "../openssl-1.1.1/include" /c /ZI /nologo /W3 /WX- /Od /Oy- /D "WIN32" /D "_CONSOLE" /Gm /EHsc /RTC1 /GS /fp:precise /Zc:forScope  /Gd /analyze- /ERRORREPORT:QUEUE
LINKER=link.exe
LFLAGS=/LIBPATH:"../lib" /INCREMENTAL /NOLOGO "websockets.lib" "kernel32.lib" "user32.lib" "advapi32.lib"  /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE

$(PROG):$(OBJ)
    $(LINKER) $(LFLAGS) $(OBJ) /OUT:$(PROG)
$(OBJ):$(SRC)
    $(CC) $(CFLAGS) $(SRC)

clean:
    del $(OBJ)
    del $(PROG)
    del *.idb
    del *.pdb
    del *.ilk
    del *.exp
    del *.lib

    Open a command-line window, execute the following instructions:

cd/d C:\Microsoft Visual Studio 10.0\VC
vcvarsall.bat x86
cd Temp\lws-demos\minimal-ws-server-echo
nmake

    The file 'minimal-ws-server-echo.exe' is created.

    When you want to delete the exe file and other intermediary files for re-creation, execute the instruction:
nmake clean

    Run the file 'minimal-ws-server-echo.exe' and allow   it to be accessed through the Windows firewall. The minimal websocket echo server is running!

 

    It cannot be accessed by a web browser. Next how to make a simple client is introduced. Use text editor to create a HTML file 'ws-server-test.html'. Its content is as follows:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
    <title>WebSocket</title>
</head>
<body>
    <h1>Echo Test</h1>
    <input id="sendTxt" type="text"/>
    <button id="sendBtn">Send</button>
    <div id="recv"></div>
    <script type="text/javascript">
        var WebSocket = new WebSocket("ws://localhost:7681");
        WebSocket.onopen = function(){
            document.getElementById("recv").innerHTML = "Websocket open!\nConnected";
        }
        WebSocket.onclose = function(){
            document.getElementById("recv").innerHTML = "Websocket close!";
        }
        WebSocket.onmessage = function(e){
            document.getElementById("recv").innerHTML = e.data;
        }
        document.getElementById("sendBtn").onclick = function(){
            var txt = document.getElementById("sendTxt").value;
            WebSocket.send(txt);
        }
    </script>
</body>
</html>

    Use a web browser to open 'ws-server-test.html', the web page is shown as follows:


    Input 'Hello, world!' in the input box, then click the 'send' button. The input will be shown below the text box:

    The websocket server will echo back whatever it receives.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值