`
haoningabc
  • 浏览: 1475285 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx push_upstream模块的websocket

阅读更多
参考
https://www.rails365.net/articles/websocket-wai-pian-nginx-push-stream-module-mo
安装
git clone https://github.com/wandenberg/nginx-push-stream-module
./configure --add-module=/Users/haoning/tool/nginx/nginx-push-stream-module --prefix=/usr/local/nginx_push_stream
make
make  install

nginx配置加入
	push_stream_shared_memory_size 32M;
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

		location /channels-stats {
            # activate channels statistics mode for this location
            push_stream_channels_statistics;

            # query string based channel id
            push_stream_channels_path               $arg_id;
        }

        location /pub {
            # activate publisher (admin) mode for this location
            push_stream_publisher admin;

            # query string based channel id
            push_stream_channels_path               $arg_id;
        }

        location ~ /ws/(.*) {
            # activate websocket mode for this location
            push_stream_subscriber websocket;

            # positional channel path
            push_stream_channels_path                   $1;
            # message template
            push_stream_message_template                "{\"id\":~id~,\"channel\":\"~channel~\",\"text\":\"~text~\"}";

            push_stream_websocket_allow_publish         on;

            # ping frequency
            push_stream_ping_message_interval           10s;
        }


启动nginx
测试查看状态
curl -s -v 'http://localhost/channels-stats'

测试写入
curl http://localhost/pub\?id\=ch1 -d "Some Text"  {"channel": "ch1", "published_messages": 1, "stored_messages": 0, "subscribers": 1}

h5的客户端代码
<html>
<head>
<script>
var ws = null;
function connect() {
  if (ws !== null) return log('already connected');
  ws = new WebSocket('ws://localhost/ws/ch1');
  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>
  {"name": "Bruce.Lin", "age": 25}
  <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>


ruby的客户端代码
require 'net/http'

uri = URI("http://localhost/pub\?id\=ch1")
http = Net::HTTP.new(uri.host, uri.port)

req = Net::HTTP::Post.new(uri.to_s)
req.body = 'Some Text'

http.request(req)

分享到:
评论

相关推荐

    nginx_upstream_check_module

    但是,原始的`upstream`模块并不具备健康检查功能,这就是`nginx_upstream_check_module`的用武之地。 ### Nginx Upstream Check Module特性 1. **健康检查**:该模块可以定期向后端服务器发送探测请求,如...

    Nginx安装+nginx_upstream_check_module后端健康检查

    patch -p0 &lt; ../nginx_upstream_check_module-master/check_1.9.2+.patch ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module --with-http_stub_status_module --with-pcre \ --with-...

    nginx_upstream_hash-0.3.2.tar.gz

    《深入解析nginx_upstream_hash模块:打造高效负载均衡策略》 在互联网服务中,nginx作为一款高性能的HTTP和反向代理服务器,广泛应用于各种复杂的网络架构中。为了满足动态负载均衡的需求,nginx提供了丰富的...

    nginx_upstream_hash-0.3.1.tar.gz

    为了实现更灵活的负载均衡策略,Nginx提供了一系列的upstream模块,其中,`nginx_upstream_hash`模块是其中的一种,用于根据请求的某些参数进行哈希计算,进而将请求定向到特定的后端服务器。本文将深入探讨`nginx_...

    nginx_upstream_check_module-master.zip

    nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问。

    nginxdocker镜像(nginx-upstream-check健康检查)

    官方nginx 镜像不带主动健康,本镜像将 nginx_upstream_check健康检查 打包到了镜像中。

    Nginx_upstream_hash-0.3.1.tar.gz

    在标题和描述中提到的"Nginx_upstream_hash-0.3.1.tar.gz"是一个Nginx的第三方模块,它扩展了upstream模块的功能,引入了基于URL哈希的分发策略。这个模块的版本为0.3.1,表明它是该功能的一个特定实现。 这个模块...

    linux nginx nginx_upstream_jvm_route

    linux nginx nginx_upstream_jvm_route

    nginx_upstream_check_module-master

    `nginx_upstream_check_module-master` 是一个由淘宝技术团队开发的Nginx扩展模块,主要用于健康检查和负载均衡器中的服务器状态监控。这个模块对于运行大规模分布式系统,尤其是那些依赖Nginx作为反向代理和负载...

    nginx_http_push_module

    `nginx_http_push_module` 是一个针对 Nginx Web 服务器的扩展模块,它提供了Web推送(HTTP Push)功能。在传统的HTTP协议中,客户端浏览器需要不断发起请求来获取服务器更新,而Web推送技术则允许服务器主动将数据...

    nginx_upstream_check.tar.gz

    docker容器中编译安装第三方后端检查模块nginx_upstream_check_module 使用方法见:https://blog.csdn.net/pcn01/article/details/105182600

    nginx_upstream_check_module-master2019.zip

    2019年11月6日18:11:19,我们获取了这个模块的最新版本"nginx_upstream_check_module-master",接下来我们将详细探讨其功能、配置以及应用场景。 1. **模块介绍** Nginx Upstream Check Module通过定期发送探测...

    生产版nginx最新版本Dockerfile 添加主动检查等第三方模块 修复漏洞

    生产版nginx最新版本Dockerfile 添加主动检查nginx_upstream_check_module等第三方模块,

    nginx-upstream-check-module-master.zip

    借助淘宝技术团队开发的nginx模快nginx_upstream_check_module来检测后方realserver的健康状态,如果后端服务器不可用,则会将其踢出upstream,所有的请求不转发到这台服务器。当期恢复正常时,将其加入upstream。 ...

    ngx_dynamic_upstream:Nginx的动态上游

    ngx_dynamic_upstream ngx_dynamic_upstream是用于使用等HTTP API动态地操作上游的模块。要求ngx_dynamic_upstream在upstream上下文中需要zone指令。 该指令在nginx-1.9.0-plus中可用。地位生产准备就绪。指令...

    nginx1.16+nginx-upstream-check-module-master+nginx-upload-module

    这里我们关注的是一个包含特定模块的Nginx配置:`nginx1.16`,`nginx-upstream-check-module-master` 和 `nginx-upload-module`。这三个组件将帮助我们增强Nginx在处理后端服务健康检查、文件上传等方面的功能。 ...

    nginx优化之request_time 和upstream_response_time差别1

    另一方面,`upstream_response_time` 是用来跟踪从Nginx与上游服务器建立连接到接收完整响应并关闭连接的时间。这个时间仅包括了Nginx与后端服务器之间的交互,不包含客户端的网络延迟和Nginx自身的处理时间。格式...

    nginx-upstream-jvm-route-1.15

    【标题】"nginx-upstream-jvm-route-1.15" 涉及的核心知识点是Nginx的upstream模块与JVM路由的整合,特别针对Nginx 1.15版本。这个项目旨在解决在配置Nginx时遇到的特定错误提示“nginx: [emerg] invalid parameter ...

Global site tag (gtag.js) - Google Analytics