erlang的websocket例子
创建工程
- rebar-creator create-app websocket_demo
文件列表
route_helper.erl
- -module(route_helper).
- -export([get_routes/]).
- get_routes() ->
- [
- {'_', [
- {"/websocket", ws_handler, []}
- ]}
- ].
websocket_demo_app.erl
- -module(websocket_demo_app).
- -behaviour(application).
- -export([start/, stop/]).
- start(_Type, _Args) ->
- ok = application:start(crypto),
- ok = application:start(cowlib),
- ok = application:start(ranch),
- ok = application:start(cowboy),
- Routes = route_helper:get_routes(),
- Dispatch = cowboy_router:compile(Routes),
- Port = ,
- TransOpts = [{port, Port}],
- ProtoOpts = [{env, [{dispatch, Dispatch}]}],
- cowboy:start_http(http, , TransOpts, ProtoOpts).
- stop(_State) ->
- ok.
ws_handler.erl
- -module(ws_handler).
- -behaviour(cowboy_websocket_handler).
- -export([init/]).
- -export([websocket_init/]).
- -export([websocket_handle/]).
- -export([websocket_info/]).
- -export([websocket_terminate/]).
- init({tcp, http}, _Req, _Opts) ->
- io:format("init ~n"),
- {upgrade, protocol, cowboy_websocket}.
- websocket_init(_TransportName, Req, _Opts) ->
- io:format("websocket_init ~n"),
- erlang:start_timer(, self(), <<"Hello!">>),
- {ok, Req, undefined_state}.
- websocket_handle({text, Msg}, Req, State) ->
- %% io:format("websocket_handle text ~p,~p,~p~n",[Msg,Req,State]),
- {reply, {text, << "That's what she said! ", Msg/binary >>}, Req, State};
- websocket_handle(_Data, Req, State) ->
- %% io:format("websocket_handle ~p,~p,~p~n",[_Data,Req,State]),
- {ok, Req, State}.
- websocket_info({timeout, _Ref, Msg}, Req, State) ->
- %io:format("websocket timeout ~n"),
- erlang:start_timer(, self(), <<"How' you doin'?">>),
- {reply, {text, Msg}, Req, State};
- websocket_info(_Info, Req, State) ->
- io:format("websocket_info ~p,~p,~p~n",[_Info,Req,State]),
- {ok, Req, State}.
- websocket_terminate(_Reason, _Req, _State) ->
- io:format("terminate ~n"),
- ok.
在线测试http://www.baiyangliu.com/lab/websocket/
本地websocket测试地址
- ws://127.0.0.1:8080/websocket
文本消息和binary消息自己打印慢慢看即可
erlang的websocket例子的更多相关文章
- Erlang cowboy websocket 服务器
Erlang cowboy websocket 服务器 原文见于: http://marcelog.github.io/articles/erlang_websocket_server_cowboy_ ...
- 带ssl的websocket例子
还是在那个websocket_demo的例子 rebar-creator create-app websocket_demo tree一下看看大概目录 ├── cert │ ├── cowboy- ...
- golang gorilla websocket例子
WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端. WebSocket通信协议于2011年被IETF定 ...
- (网页)websocket例子
转载自博客园张果package action; import javax.websocket.CloseReason; import javax.websocket.OnClose; import j ...
- 基于netty的websocket例子
nettyServer package com.atguigu.netty.websocket; import javax.annotation.PostConstruct; import org.s ...
- Springboot WebSocket例子
Springboot整合WebSocket 1.application.properties #设置服务端口号 server.port=8080 #thymeleaf配置 #是否启用模板缓存. spr ...
- WebSocket实战之——JavaScript例子
一.详细代码案例 详细解读一个简单html5 WebSocket的Js实例教程,附带完整的javascript websocket实例源码,以及实例代码效果演示页面,并对本实例的核心代码进行了深入解读 ...
- html websocket
from:http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/ websocket 规范升级过,在该链接的文章内未提及,后面 ...
- erlang 200w进程测试
参照<programing erlang>书例子,测试erlang创建进程性能 创建N个进程 都wait,然后挨个发送die关闭进程,代码如下: 测试场景:200w进程.MacBook P ...
随机推荐
- 发送垃圾邮件的僵尸网络——药物(多)、赌博、股票债券等广告+钓鱼邮件、恶意下载链接、勒索软件+推广加密货币、垃圾股票、色情网站(带宏的office文件、pdf等附件)
卡巴斯基实验室<2017年Q2垃圾邮件与网络钓鱼分析报告> 米雪儿 2017-09-07 from:http://www.freebuf.com/articles/network/1465 ...
- 初识async函数
为什么会出现async函数 首先从大的方面来说,出现async函数时为了解决JS编程中的异步操作,再往具体说就是为了对以往异步编程方法的一种改进,也有人说仅仅只是Generator 函数的语法糖,这个 ...
- vue创建组件
vue创建组件是很容易的: js: Vue.component("component-item",{ //component-item就是我们在HTML页面上引用的组件,它会在 ...
- Idea_02_常用配置
一.前言 在上一节,我们安装并激活了IDEA,这一节我们来设置下Idea的常用配置: 项目相关配置 Idea常用配置 二.项目相关配置 运行Idea,出现下图 1.配置默认JDK 1.1 添加 SDK ...
- 20165202 学习基础和c语言基础调查
你有什么技能比大多人(超过90%以上)更好? 我对自行车运动的兴趣始于初中时期,不敢说比大多数人更好,但在业余爱好者中相对来说还不错. 针对这个技能的获取你有什么成功的经验? 接触自行车运动几年里,我 ...
- ASP.NET MVC 中使用用户控件——转
讲讲怎么在 ASP.NET MVC2中使用用户控件.首先我们新建一个用户控件, 我们命名为SelectGroup.ascx,代码如下 <%@ Control Language="C ...
- 《Tomcat内核设计剖析》京东评论过百
到京东看了下<Tomcat内核设计剖析>评论都一百多了,上个月也第二次印刷了,这里看下好评.中评和差评. 好评: 中评 对于中评,请看 为什么<写Tomcat内核设计剖析>,就 ...
- 1. Java EE简介 - JavaEE基础系列
什么是Java EE? 真的是你理解的那样吗? Java EE, 原名J2EE, 其核心由一系列抽象的标准规范所组成, 是针对目前软件开发中所普遍面临问题的解决方案. 注意以上定义中的"抽象 ...
- 如何使用fiddller跟踪windows进程发送的请求20140911
总结点:如何使用fiddller跟踪windows进程发送的请求 案例如下: 需求:运维工具提出需求,对每个插件的配置文件,同步到运维中心时先加密,然后传输到运维中心解密,存储到数据库 测试分析:这个 ...
- HDU 1374
http://acm.hdu.edu.cn/showproblem.php?pid=1374 已知三点坐标,求三点确定的圆的周长 #include <iostream> #include ...