- 浏览: 1477850 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
mac安装openresty
openssl还是有问题 shared等
参考
https://blog.csdn.net/csdncqmyg/article/details/73835354
bundle/nginx-x-x-x(版本号)/auto/lib/openssl/conf
把.openssl删掉 ,只删这个单词
几年前调过的
http://haoningabc.iteye.com/blog/2168717
参考教程如下
openresty
http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
https://www.openresty.net.cn/
https://github.com/openresty/lua-nginx-module
http://wiki.jikexueyuan.com/project/openresty/openresty/get_url_param.html
https://www.cnblogs.com/scotoma/p/3330190.html
nginx.conf添加
客户端
调用url的例子
简单点的
websocket 的
nginx.conf配置执行lua
brew install openssl ./configure --prefix=/usr/local/openresty --with-openssl=/usr/local/Cellar/openssl/1.0.2o_1 make make install
openssl还是有问题 shared等
参考
https://blog.csdn.net/csdncqmyg/article/details/73835354
bundle/nginx-x-x-x(版本号)/auto/lib/openssl/conf
把.openssl删掉 ,只删这个单词
几年前调过的
http://haoningabc.iteye.com/blog/2168717
参考教程如下
openresty
http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
https://www.openresty.net.cn/
https://github.com/openresty/lua-nginx-module
http://wiki.jikexueyuan.com/project/openresty/openresty/get_url_param.html
https://www.cnblogs.com/scotoma/p/3330190.html
nginx.conf添加
location /1.0/websocket { lua_socket_log_errors off; lua_check_client_abort on; content_by_lua_block { local server = require "resty.websocket.server" local wb, err = server:new{ timeout = 5000, -- in milliseconds max_payload_len = 65535, } if not wb then ngx.log(ngx.ERR, "failed to new websocket: ", err) return ngx.exit(444) end while true do local data, typ, err = wb:recv_frame() if wb.fatal then ngx.log(ngx.ERR, "failed to receive frame: ", err) return ngx.exit(444) end if not data then local bytes, err = wb:send_ping() if not bytes then ngx.log(ngx.ERR, "failed to send ping: ", err) return ngx.exit(444) end elseif typ == "close" then break elseif typ == "ping" then local bytes, err = wb:send_pong() if not bytes then ngx.log(ngx.ERR, "failed to send pong: ", err) return ngx.exit(444) end elseif typ == "pong" then ngx.log(ngx.INFO, "client ponged") elseif typ == "text" then local bytes, err = wb:send_text("from nginx:"..data) if not bytes then ngx.log(ngx.ERR, "failed to send text: ", err) return ngx.exit(444) end end end wb:send_close() } }
客户端
<html> <head> <script> var ws = null; function connect() { if (ws !== null) return log('already connected'); ws = new WebSocket('ws://localhost/1.0/websocket'); ws.onopen = function () { log('connected'); }; ws.onerror = function (error) { log(error); }; ws.onmessage = function (e) { log('recv: ' + e.data); }; ws.onclose = function () { log('disconnected'); ws = null; }; return false; } function disconnect() { if (ws === null) return log('already disconnected'); ws.close(); return false; } function send() { if (ws === null) return log('please connect first'); var text = document.getElementById('text').value; document.getElementById('text').value = ""; log('send: ' + text); ws.send(text); return false; } function log(text) { var li = document.createElement('li'); li.appendChild(document.createTextNode(text)); document.getElementById('log').appendChild(li); return false; } </script> </head> <body> <form onsubmit="return send();"> <button type="button" onclick="return connect();"> Connect </button> <button type="button" onclick="return disconnect();"> Disconnect </button> <input id="text" type="text"> <button type="submit">Send</button> </form> <ol id="log"></ol> </body> </html>
调用url的例子
function max(mystr) local sock = ngx.socket.tcp() --ngx.say("hello I am in /data/www/lua/ ") ngx.say(mystr) -- local ai_url = "http://10.22.57.168:8080/interaction" local ok, err = sock:connect("www.baidu.com", 80) --local ok, err = sock:connect(ai_url, 80) if not ok then ngx.say("failed to connect to baidu: ", err) return end local req_data = "GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n" -- local req_data = '{"misid":"12345","content":{"type":"manual","text":"附近有什么外卖"},"tm":1524130703583}' local bytes, err = sock:send(req_data) if err then ngx.say("failed to send to baidu: ", err) return end local data, err, partial = sock:receive() if err then ngx.say("failed to recieve to baidu: ", err) return end sock:close() ngx.say("successfully talk to baidu! response first line: ", data) end max("hello world ya")
简单点的
local res = ngx.location.capture( 'http://10.22.57.168:8080/interaction', { method = ngx.HTTP_POST, -- args = ngx.encode_args({a = 1, b = '2&'}), --body = ngx.encode_args({c = 3, d = '4&'}) body = '{"misid":"12345","content":{"type":"manual","text":"附近有什么外卖"},"tm":1524130703583}' } ) ngx.say(res.body)
websocket 的
local server = require "resty.websocket.server" local wb, err = server:new{ timeout = 5000, -- in milliseconds max_payload_len = 65535, } if not wb then ngx.log(ngx.ERR, "failed to new websocket: ", err) return ngx.exit(444) end while true do local data, typ, err = wb:recv_frame() if wb.fatal then ngx.log(ngx.ERR, "failed to receive frame: ", err) return ngx.exit(444) end if not data then local bytes, err = wb:send_ping() if not bytes then ngx.log(ngx.ERR, "failed to send ping: ", err) return ngx.exit(444) end elseif typ == "close" then break elseif typ == "ping" then local bytes, err = wb:send_pong() if not bytes then ngx.log(ngx.ERR, "failed to send pong: ", err) return ngx.exit(444) end elseif typ == "pong" then ngx.log(ngx.INFO, "client ponged") elseif typ == "text" then local cjson = require "cjson" --local json_str = '{"name": "hao.ning", "age": 25}' --local json = cjson.decode(json_str) local json = cjson.decode(data) if not json then ngx.log(ngx.ERR, "failed json: ", err) return ngx.exit(444) end -- local bytes, err = wb:send_text("from nginx /data/www/lua: "..data) ngx.ctx.wb_list={} ngx.ctx.wb_list["hao"]="abc" ngx.ctx.wb_list[json['name']]="aaaa" --local bytes, err = wb:send_text("from nginx save wb:"..json['name']) --local bytes, err = wb:send_text("from nginx save wb:"..table.getn(ngx.ctx.wb_list)) local bytes, err = wb:send_text("from nginx save wb:"..ngx.ctx.wb_list["Bruce.Lin"]) if not bytes then ngx.log(ngx.ERR, "failed to send text: ", err) return ngx.exit(444) end end end wb:send_close()
nginx.conf配置执行lua
location /hellolua { content_by_lua_file /data/www/lua/luatest.lua; }
发表评论
-
websocket直播
2020-05-22 17:59 5081.websocket转发的最简单server 2.h5接收w ... -
ios的safari使用自制ca证书测试webrtc
2018-08-20 13:31 2441这个需要注意 https://stackoverflow.c ... -
nginx push_upstream模块的websocket
2018-05-04 23:27 1221参考 https://www.rails365.net/art ... -
openresty聊天室的helloworld
2018-04-22 19:25 800openresty的websocket + redis的sub ... -
nginx代理wss和https
2018-02-27 15:34 3929nginx启用ssl yum install openssl ... -
nginx模块开发(三)upstream模块
2017-08-20 23:48 845使用nginx-1.13.4版本 三个文件ngx_http_ ... -
nginx模块开发(二) 使用gdb-dashboard调试
2017-08-11 18:47 2010gdb-dashboard或者 gdbgui 或者gdb自带 ... -
nginx模块开发(一)
2017-07-29 22:44 566决定重新整理nginx模块开发 helloworld con ... -
nginx带进度条的上传超大文件
2016-12-12 18:40 387311年写的 http://haoningabc.iteye.c ... -
nginx rewrite替代apache rewrite
2016-10-18 20:30 834清理chrome的缓存 chrome://appcache-i ... -
websocket和tap使用select关联
2016-06-14 22:01 749c语言的socket基础http://haoningabc.i ... -
ffmpeg+nginx 的直播(2,直播摄像头和麦克风)
2016-05-28 20:21 4360假设我的服务器是centos7 192.168.139.117 ... -
ffmpeg+nginx 的直播(1,直播播放的视频文件)
2016-05-26 17:11 659464位操作系统centos7 ############ 1.一 ... -
websocket传传图片
2015-12-25 17:51 7246参考[url]http://www.adobe.com/dev ... -
websocket相关调研 总结帖
2014-12-21 21:53 4028最近把websocket的客户端和服务端使用过的调通的例子总结 ... -
autobahn的helloworld
2014-11-08 18:36 2765python2.7.8可用,python2.6一样的代码就有问 ... -
ios websocket server端
2014-10-22 00:07 2198https://github.com/benlodotcom/ ... -
ios客户端websocket的helloworld
2014-10-09 02:11 23188ios8,xcode6 https://github.com/ ... -
websocket,使用tomcat7转发
2014-10-03 18:40 11740前篇: http://haoningabc.iteye.com ... -
nginx执行流程
2014-04-15 18:35 1081目标:打印nginx执行之后的流程方法 my_debug.c ...
相关推荐
在本文中,我们将深入探讨如何基于WebSocket构建一个支持多人多聊天室的服务器,以及如何利用OpenResty这一强大的Web服务器平台来实现这一目标。 首先,WebSocket API允许Web应用程序在单个TCP连接上进行全双工通信...
lua-resty-websocket, 对ngx_lua模块( 和 OpenResty )的web socket支持 电子邮件名称lua-resty-websocket - ngx_lua模块的Lua web socket实现 table-内容名称状态描述概要说明模块resty.websocket.server方法新插件...
在部署过程中,开发者需要安装OpenResty环境,配置WebSocket支持,编写 Lua 脚本处理业务逻辑,然后将静态资源部署到相应的路径,最后启动OpenResty服务。用户则通过浏览器打开聊天室页面,连接WebSocket服务器,就...
OpenResty是一款基于Nginx与LuaJIT的高性能Web平台,它将强大的Lua脚本语言集成到了Nginx中,使得开发者可以利用Lua轻松构建出高性能的HTTP服务器、反向代理服务器以及WebSocket服务等。在`openresty-1.11.2.5.tar....
4. Websocket编程:理解WebSocket协议,能够在OpenResty中实现WebSocket服务器。 5. 数据库操作:熟悉SQL语言,使用lua-resty-mysql或其他库进行数据库交互。 6. 安全性:了解常见的Web安全问题,如XSS、CSRF等,并...
OpenResty 是一个基于 Nginx 的 Web 服务器,它提供了许多有用的功能,例如 Lua 脚本、SSL/TLS 支持、Websocket 支持等。OpenResty 是 Kong 的一个重要组件,它提供了 Kong 的核心功能。 Mashape 是 Kong 的背后...
openresty 前端开发进阶六之websocket篇 openresty 前端开发高级应用一之性能优化 openresty 前端开发高级应用一之动态追踪技术 openresty 简单应用 openresty 灰度发布 openresty 定时任务 openresty 应用打包并...
- **后端服务**:构建 RESTful API 服务器、WebSocket 服务器等。 - **实时通信**:实现聊天应用、在线游戏等实时交互系统。 - **微服务架构**:作为微服务的一部分,提供特定的功能或服务。 ### 二、微服务架构...
3. **丰富的模块库**:OpenResty提供了许多预装的Nginx模块,如lua-nginx-module、resty.http、resty.redis等,用于HTTP、WebSocket、数据库连接、缓存、负载均衡等功能。这些模块简化了与各种后端服务的交互,如...
此外,OpenResty还支持WebSocket,可以构建实时通信应用,如聊天室或在线游戏。 总结起来,Python-openresty和lua的结合提供了一种高效且灵活的开发模式,通过Lua在Nginx层进行轻量级的处理,借助Python处理复杂的...
OpenResty可以轻松集成WebSocket,通过lua-nginx-module模块,实现WebSocket的握手和数据传输。 构建百万级长连接系统,需要考虑的关键点包括: 1. **连接管理**:为了有效地管理和维护大量连接,可以使用连接池,...
3. **Web服务开发**:开发人员可以使用OpenResty轻松地构建RESTful API服务、WebSocket服务器、实时流媒体服务器、动态内容生成、API网关、负载均衡器等。 4. **高效的数据处理**:通过Lua的语法,OpenResty可以...
首先,OpenResty通过Nginx的模块化设计,可以处理HTTP、HTTPS、WebSocket等多种协议,这使得它能够作为容器平台的前端入口,接收来自客户端的请求,并进行初步的处理。在又拍云的容器环境中,OpenResty扮演了重要的...
Lor是一个运行在[OpenResty](http://openresty.org)上的基于Lua编写的Web框架. 路由采用[Sinatra](http://www.sinatrarb.com/)风格,结构清晰,易于编码和维护. API借鉴了[Express](http://expressjs.com)的思路...
OpenResty的`capture_multi`和`cosocket`特性,结合coroutine(协程)和socket技术,能有效地处理TCP/UDP协议的上下游连接,包括MySQL、Redis、WebSocket和DNS查询等,从而实现高效的并发查询。 面对新型攻击手段,...
2. **HTTP/2 & WebSocket 支持**: 由于 OpenResty 基于 Nginx,因此它天生支持 HTTP/2 和 WebSocket 协议,这对于现代 Web 应用是至关重要的。 3. **性能优化**: OpenResty 提供了高效的 LuaJIT 编译器,使得在处理...
Proxyee是JAVA编写的HTTP代理服务器库,它支持HTTP,HTTPS,Websocket协议,并支持MITM(中间人),它可以捕获和篡改HTTP,HTTPS数据包。 用法 < groupId>com.github.monkeywie</ groupId> < artifactId>proxyee ...
在IT行业中,网络通信是关键的一环,而`socket.io`和`openresty`都是在这一领域中非常重要的工具。本项目是一个基于`socket.io`客户端和`openresty`服务器的实时聊天示例,旨在展示如何在JavaScript环境下利用这两种...
连接到websocket端点 websocat -E -b tcp-l:127.0.0.1:2288 ws://example.com/websocat 连接到localhost SSH隧道 ssh -i ~ /.ssh/id_ecdsa -p 2288 -v -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null...