1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
<tt>
<div dir="ltr"><div><div><div><div><div>hello,<br><br></div>Thanks for all. The solution is to put the line at last<br> {<span class=""><span class="">"</span>/[...]<span class="">"</span></span>, <span class="">cowboy_static</span>, {<span class="">priv_dir</span>, <span class="">websocket_2</span>, <span class=""><span class="">"</span><span class="">"</span></span>}}<br><br></div>Now It works as I expect.<br><br></div>thanks for your help again.<br><br></div>br,<br></div>/Robi<br><div><div><div><div><br></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-06-23 11:09 GMT+02:00 Loïc Hoguin <span dir="ltr"><<a href="mailto:essen@ninenines.eu" target="_blank">essen@ninenines.eu</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Oh nice catch ahah. We should probably warn when something like this happens.<span class=""><br><br>
<br><br>
On 06/23/2015 11:06 AM, Graham Hay wrote:<br><br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
I think the order of your routes is the problem, try putting this line<br></span><br>
<<a href="https://github.com/ethrbh/websocket_2/blob/master/src/websocket_2_app.erl#L17" rel="noreferrer" target="_blank">https://github.com/ethrbh/websocket_2/blob/master/src/websocket_2_app.erl#L17</a>><span class=""><br><br>
last.<br><br>
<br><br>
On 23 June 2015 at 09:56, Loïc Hoguin <<a href="mailto:essen@ninenines.eu" target="_blank">essen@ninenines.eu</a><br></span><div><div class="h5"><br>
<mailto:<a href="mailto:essen@ninenines.eu" target="_blank">essen@ninenines.eu</a>>> wrote:<br><br>
<br><br>
The {error, enoent}, especially there, is probably just because the<br><br>
browser is trying to fetch the favicon.<br><br>
<br><br>
Your issue is that Websocket won't connect, so it has nothing to do<br><br>
with cowboy_rest. Try tracing cowboy_websocket or enable SASL to<br><br>
have more info.<br><br>
<br><br>
<br><br>
On 06/23/2015 10:28 AM, Robert Balogh wrote:<br><br>
<br><br>
hello,<br><br>
<br><br>
First of all I would say I am a beginner in Cowboy web server, so<br><br>
probably I made something wrong, that is why I got the "fault",<br><br>
what I got.<br><br>
<br><br>
I would like to build up web page, where the client can<br><br>
communicate to<br><br>
server, and server can do the same to client, if client does not<br><br>
send<br><br>
anything to server too. The Cowboy has the websocket example,<br><br>
what does<br><br>
what I would like to do.<br><br>
<br><br>
There is only one thing is missing what I would like to have.<br><br>
This is<br><br>
the "frameset". My idea is to build the index.html using framsets. I<br><br>
made this changes, and I build up the html files for the frames,<br><br>
and of<br><br>
course I set these in the index.html.<br><br>
<br><br>
Here is how the index.html looks like<br><br>
<html><br><br>
<br><br>
<head><br><br>
<title>Welcome to Websocket example 2</title><br><br>
</head><br><br>
<br><br>
<frameset rows="64,*"><br><br>
<frame name="top_frame" noresize="noresize" scrolling="no"<br><br>
src="frame_top.html"><br><br>
<frameset cols="450,*"><br><br>
<frame name="left_frame" scrolling="auto"<br><br>
src="frame_left.html"><br><br>
<frame name="right_frame" src="frame_right.html"><br><br>
</frameset><br><br>
<noframes><br><br>
<body><br><br>
<br><br>
</body><br><br>
</noframes><br><br>
</frameset><br><br>
<br><br>
</html><br><br>
<br><br>
This is how the priv folder looks like<br><br>
-----------------------------------------------------------<br><br>
ls priv/<br><br>
frame_left.html frame_right.html frame_top.html<br><br>
index.html static<br><br>
<br><br>
This is how I changed the websocket_2_app:start/2 function<br><br>
-----------------------------------------------------------<br><br>
Dispatch = cowboy_router:compile([<br><br>
{'_', [<br><br>
<br><br>
{"/", cowboy_static, {priv_file, websocket_2,<br><br>
"index.html"}},<br><br>
{"/[...]", cowboy_static, {priv_dir, websocket_2,<br><br>
""}},<br><br>
<br><br>
{"/websocket_2", ws_handler_2, []},<br><br>
{"/static/[...]", cowboy_static, {priv_dir,<br><br>
websocket_2,<br><br>
"static"}}<br><br>
]}<br><br>
]),<br><br>
<br><br>
After compile and make release package of the app, I can reach the<br><br>
webserver on the port 8080, but some connection does not set up<br><br>
correctly. The following texts are present in the browser<br><br>
DISCONNECTED<br><br>
<br><br>
ERROR: undefined<br><br>
<br><br>
Connecting to: ws://localhost:8080/websocket_2<br><br>
<br><br>
I made a dbg trace on all cowboy modules, to start some kind of<br><br>
troubleshooting. In the "tons" of printout I can see this one.<br><br>
So in the<br><br>
bottom of this, there is an {error,enoent}. It comes when tries<br><br>
connect<br><br>
to the socket. But unfortunatelly I do not have idea what may<br><br>
cause this :-(<br><br>
<br><br>
The part of trace<br><br>
-----------------------------------------------------------<br><br>
(<0.177.0>) call<br><br>
cowboy_rest:next({http_req,#Port<0.646>,ranch_tcp,keepalive,<0.177.0>,<<"GET">>,'HTTP/1.1',<br><br>
{{127,0,0,1},33241},<br><br>
<<"localhost">>,undefined,8080,<<"/websocket_2">>,<br><br>
[<<"websocket_2">>],<br><br>
<<>>,undefined,[],<br><br>
[{<<"host">>,<<"localhost:8080">>},<br><br>
{<<"connection">>,<<"Upgrade">>},<br><br>
{<<"pragma">>,<<"no-cache">>},<br><br>
{<<"cache-control">>,<<"no-cache">>},<br><br>
{<<"upgrade">>,<<"websocket">>},<br><br>
{<<"origin">>,<<"<a href="http://localhost:8080" rel="noreferrer" target="_blank">http://localhost:8080</a>">>},<br><br>
{<<"sec-websocket-version">>,<<"13">>},<br><br>
{<<"user-agent">>,<br><br>
<<"Mozilla/5.0 (X11; Linux i686)<br><br>
AppleWebKit/537.36<br><br>
(KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36">>},<br><br>
{<<"accept-encoding">>,<<"gzip, deflate, sdch">>},<br><br>
{<<"accept-language">>,<<"en-US,en;q=0.8">>},<br><br>
<br><br>
{<<"sec-websocket-key">>,<<"by/gwaQvb/51W7Wa9zrGQg==">>},<br><br>
{<<"sec-websocket-extensions">>,<br><br>
<<"permessage-deflate;<br><br>
client_max_window_bits">>}],<br><br>
[{<<"connection">>,[<<"upgrade">>]}],<br><br>
<br><br>
undefined,[],waiting,<<>>,undefined,false,waiting,[],<<>>,undefined},{state,[{handler,cowboy_static},<br><br>
{handler_opts,{priv_dir,websocket_2,[]}},<br><br>
{listener,http},<br><br>
{dispatch,[{'_',[],<br><br>
[{[],[],cowboy_static,<br><br>
<br><br>
{priv_file,websocket_2,"index.html"}},<br><br>
<br><br>
{['...'],[],cowboy_static,{priv_dir,websocket_2,[]}},<br><br>
<br><br>
{[<<"websocket_2">>],[],ws_handler_2,[]},<br><br>
{[<<"static">>,'...'],<br><br>
[],cowboy_static,<br><br>
<br><br>
{priv_dir,websocket_2,"static"}}]}]}],<br><br>
<<"GET">>,cowboy_static,<br><br>
<br><br>
{<<"/home/ethrbh/projects/github/websocket_2/_rel/websocket_2/lib/websocket_2-1/priv/websocket_2">>,<br><br>
{error,enoent},<br><br>
[]},<br><br>
<br><br>
undefined,[],undefined,[],undefined,[],undefined,false,undefined,<br><br>
undefined,undefined},#Fun<cowboy_rest.2.41839999>)<br><br>
(Timestamp: {1435,<br><br>
<br><br>
46126,<br><br>
<br><br>
935663})<br><br>
<br><br>
I guess, I did something very wrong, but I did not found what is<br><br>
that,<br><br>
thus I would like to get some help from you.<br><br>
<br><br>
Please find my small project in github:<br><br>
<a href="https://github.com/ethrbh/websocket_2" rel="noreferrer" target="_blank">https://github.com/ethrbh/websocket_2</a><br><br>
<br><br>
thanks for your help,<br><br>
/Robi<br><br>
<br><br>
<br><br>
<br><br>
_______________________________________________<br><br>
Extend mailing list<br></div></div><br>
<a href="mailto:Extend@lists.ninenines.eu" target="_blank">Extend@lists.ninenines.eu</a> <mailto:<a href="mailto:Extend@lists.ninenines.eu" target="_blank">Extend@lists.ninenines.eu</a>><span class=""><br><br>
<a href="https://lists.ninenines.eu/listinfo/extend" rel="noreferrer" target="_blank">https://lists.ninenines.eu/listinfo/extend</a><br><br>
<br><br>
<br><br>
--<br><br>
Loïc Hoguin<br><br>
<a href="http://ninenines.eu" rel="noreferrer" target="_blank">http://ninenines.eu</a><br><br>
Author of The Erlanger Playbook,<br><br>
A book about software development using Erlang<br><br>
_______________________________________________<br><br>
Extend mailing list<br></span><br>
<a href="mailto:Extend@lists.ninenines.eu" target="_blank">Extend@lists.ninenines.eu</a> <mailto:<a href="mailto:Extend@lists.ninenines.eu" target="_blank">Extend@lists.ninenines.eu</a>><br><br>
<a href="https://lists.ninenines.eu/listinfo/extend" rel="noreferrer" target="_blank">https://lists.ninenines.eu/listinfo/extend</a><br><br>
<br><br>
<br><br>
</blockquote><div class="HOEnZb"><div class="h5"><br>
<br><br>
-- <br><br>
Loïc Hoguin<br><br>
<a href="http://ninenines.eu" rel="noreferrer" target="_blank">http://ninenines.eu</a><br><br>
Author of The Erlanger Playbook,<br><br>
A book about software development using Erlang<br><br>
</div></div></blockquote></div><br></div><br>
</tt>
|