答复: [jetty-user] websocket problem
<[email protected]> Tue, 27 Nov 2012 10:25:04 +0000
| Newsgroups | gmane.comp.java.jetty.support |
|---|---|
| Message-ID | <[email protected]> |
--_000_32D3F4B1B1ED1E478B1AC55A596F0E6C011DAAC2TPMS1003wistron_
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: base64
aGkgQnJldHSjug0KDQpCdXQgbm93IHRoZSBwcm9ibGVtIGlzLCB1bnBsdWcgY2FibGUgY29ubmVj
dGlvbiwgYW5kIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgb25jbG9zZSAoICkgbWV0aG9kLCB0
aGlzIGlzIGEgc2VydmljZSBkZXBsb3ltZW50IGluIGNlbnRvczYuIDIsIHRoZSBqZXR0eSBjYW5u
b3QgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbm5lY3Rpb24gaXMgYnJva2VuPy4NCg0KSWYgdGhl
IHNlcnZpY2UgaXMgZGVwbG95ZWQgaW4gdGhlIHdpbmRvdyB4cCBzeXN0ZW0sIHVucGx1ZyBjYWJs
ZSBjb25uZWN0aW9uIGludG8gdGhlIG9uY2xvc2UgKCApIG1ldGhvZC4NCg0KDQq3orz+yMs6IEJy
ZXR0IFdvb2xkcmlkZ2UgW21haWx0bzpicmV0dC53b29sZHJpZGdlQGdtYWlsLmNvbV0NCreiy83K
sbzkOiAyMDEyxOoxMdTCMjfI1SAxODoxMg0KytW8/sjLOiB1c2VyQGpldHR5LmNvZGVoYXVzLm9y
Zw0K1vfM4jogUmU6IFtqZXR0eS11c2VyXSB3ZWJzb2NrZXQgcHJvYmxlbQ0KDQpZaW4sDQoNCkFz
IGZhciBhcyBJIGtub3csIHRoZSBvbmx5IHdheSB0byBrbm93IHRoZXJlIHdhcyBhIGRpc2Nvbm5l
Y3Rpb24gaXMgd2hlbiB5b3UgYXR0ZW1wdCB0byB3cml0ZSBkYXRhIHRvIHRoYXQgd2Vic29ja2V0
LiAgV2hlbiBhIGNvbm5lY3Rpb24gaXMgcGh5c2ljYWxseSB1bnBsdWdnZWQsIFRDUCBkb2VzIG5v
dCBhY3R1YWxseSBkaXNjb25uZWN0IHRoZSBzb2NrZXQsIGJlY2F1c2Ugc3VjaCBhbiBpbnRlcnJ1
cHRpb24gbWF5IGJlIHRyYW5zaWVudC4gIEluIGpldHR5LCBpZiB5b3UgaGF2ZSBhIGNsYXNzIHRo
YXQgaW1wbGVtZW50cyBXZWJTb2NrZXQuT25UZXh0TWVzc2FnZSwgZm9yIGV4YW1wbGUsIHlvdSBj
YW4gaW1wbGVtZW50IHNvbWV0aGluZyAocm91Z2hseSkgbGlrZSB0aGlzOg0KDQpwdWJpYyB2b2lk
IHNlbmRNZXNzYWdlKFN0cmluZyBtZXNzYWdlKSB7DQogICB0cnkgew0KICAgICAgY29ubmVjdGlv
bi5zZW5kTWVzc2FnZShtZXNzYWdlKTsgLy8gc2VuZCBtZXNzYWdlIHRvIHVzZXIncyB3ZWJzb2Nr
ZXQgY29ubmVjdGlvbg0KICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gaW8pIHsNCiAgICAgIGNvbm5l
Y3Rpb24uY2xvc2UoKTsNCiAgIH0NCn0NCg0KQE92ZXJyaWRlDQpwdWJsaWMgdm9pZCBvbk9wZW4o
Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7DQogICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9u
Ow0KICAgLy8gam9pbiBjaGF0IHJvb20NCn0NCg0KQE92ZXJyaWRlDQpwdWJsaWMgdm9pZCBvbkNs
b3NlKGludCBjbG9zZUNvZGUsIFN0cmluZyBtZXNzYWdlKSB7DQogICBpZiAoY29ubmVjdGlvbiAh
PSBudWxsKSB7DQogICAgICBjb25uZWN0aW9uID0gbnVsbDsNCiAgICAgIC8vIGxlYXZlIGNoYXRy
b29tDQogICB9DQp9DQoNCg0KT24gVHVlLCBOb3YgMjcsIDIwMTIgYXQgNjo0MCBQTSwgPFlpblpo
YW5nQHdpc3Ryb25pdHMuY29tPG1haWx0bzpZaW5aaGFuZ0B3aXN0cm9uaXRzLmNvbT4+IHdyb3Rl
Og0KDQpoaSBhbGw6DQoNCkkgYW0gdXNpbmcgamV0dHktaGlnaHRpZGUtOC4wLjQudjIwMTExMDI0
LCB0aGUgdXNlIG9mIHdlYnNvY2tldCB0byBtYWtlIGEgY2hhdCwgSSBlbmNvdW50ZXJlZCBhIHBy
b2JsZW0sIHdoZW4gdGhyZWUgcGVvcGxlIGF0IHRoZSBzYW1lIHRpbWUgb25saW5lIGNoYXQsIHdo
ZW4gc3VkZGVubHkgYSBtYW4gdW5wbHVnIGNhYmxlIG91dCBvZiBjaGF0LCBzZXJ2ZXIgaXMgdW5h
YmxlIHRvIGRldGVybWluZSB0aGUgY29ubmVjdGlvbiBpcyBkaXNjb25uZWN0ZWQsIGhvdyB0aGUg
c2VydmVyIGtub3cgdW5wbHVnZ2VkIG5ldHdvcmsgbGluZSBvZiBodW1hbiBjb25uZWN0aW9uIHN0
YXRlPyBDYW4geW91IGhlbHAgbWU/IFRoYW5rIHlvdSB2ZXJ5IG11Y2ghDQoNCg0KDQogICAgICBC
ZXN0IFJlZ2FyZHMsDQoNCiBZaW4gemhhbmcNCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Kg0KVGhpcyBlLW1haWwgaXMgY29uZmlkZW50aWFsIGZvciBXaXN0cm9uSVRTIGNvcnAuIEl0IG1h
eSBiZSBsZWdhbGx5IHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBBZGRyZXNzZWUgeW91
IG1heSBub3QgY29weSwNCmZvcndhcmQsIGRpc2Nsb3NlIG9yIHVzZSBhbnkgcGFydCBvZiBpdC4g
SWYgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBtZXNzYWdlIGluIGVycm9yLCBwbGVhc2UgZGVsZXRl
IGl0IGFuZCBhbGwgY29waWVzIGZyb20geW91cg0KIHN5c3RlbSBhbmQgbm90aWZ5IHRoZSBzZW5k
ZXIgaW1tZWRpYXRlbHkgYnkgcmV0dXJuIGUtbWFpbC5JbnRlcm5ldCBjb21tdW5pY2F0aW9ucyBj
YW5ub3QgYmUgZ3VhcmFudGVlZCB0byBiZSB0aW1lbHksDQpzZWN1cmUsIGVycm9yIG9yIHZpcnVz
LWZyZWUuIFRoZSBzZW5kZXIgZG9lcyBub3QgYWNjZXB0IGxpYWJpbGl0eSBmb3IgYW55IGVycm9y
cyBvciBvbWlzc2lvbnMuDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqDQpUaGlzIGUtbWFpbCBpcyBjb25maWRlbnRpYWwgZm9yIFdp
c3Ryb25JVFMgY29ycC4gSXQgbWF5IGJlIGxlZ2FsbHkgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBu
b3QgdGhlIEFkZHJlc3NlZSB5b3UgbWF5IG5vdCBjb3B5LA0KZm9yd2FyZCwgZGlzY2xvc2Ugb3Ig
dXNlIGFueSBwYXJ0IG9mIGl0LiBJZiB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIG1lc3NhZ2UgaW4g
ZXJyb3IsIHBsZWFzZSBkZWxldGUgaXQgYW5kIGFsbCBjb3BpZXMgZnJvbSB5b3VyDQogc3lzdGVt
IGFuZCBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBieSByZXR1cm4gZS1tYWlsLkludGVy
bmV0IGNvbW11bmljYXRpb25zIGNhbm5vdCBiZSBndWFyYW50ZWVkIHRvIGJlIHRpbWVseSwNCnNl
Y3VyZSwgZXJyb3Igb3IgdmlydXMtZnJlZS4gVGhlIHNlbmRlciBkb2VzIG5vdCBhY2NlcHQgbGlh
YmlsaXR5IGZvciBhbnkgZXJyb3JzIG9yIG9taXNzaW9ucy4NCioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqDQo=
--_000_32D3F4B1B1ED1E478B1AC55A596F0E6C011DAAC2TPMS1003wistron_
Content-Type: text/html; charset="gb2312"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dgb2312">
<style>
<!--
@font-face
{font-family:SimSun}
@font-face
{font-family:SimSun}
@font-face
{font-family:Calibri}
@font-face
{font-family:SimSun}
@font-face
{font-family:Verdana}
@font-face
{font-family:GulimChe}
@font-face
{font-family:"\@GulimChe"}
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif"}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline}
p
{margin-right:0cm;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman","serif"}
span.EmailStyle18
{font-family:"Calibri","sans-serif";
color:#1F497D}
span.highlight
{}
.MsoChpDefault
{}
@page Section1
{margin:72.0pt 90.0pt 72.0pt 90.0pt}
div.Section1
{}
-->
</style>
</head>
<body lang=3D"ZH-CN" link=3D"blue" vlink=3D"purple">
<div class=3D"Section1">
<p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:15.0pt; f=
ont-family:GulimChe">hi Brett</span></b><b><span style=3D"font-size:15.0pt;=
font-family:SimSun">=A3=BA</span></b><b><span lang=3D"EN-US" style=3D"font=
-size:15.0pt; font-family:GulimChe"></span></b></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:15.0pt; f=
ont-family:GulimChe"> </span></b></p>
<p class=3D"MsoNormal" style=3D"margin-left:12.0pt; line-height:15.0pt; ver=
tical-align:baseline">
<b><span lang=3D"EN-US" style=3D"font-size:15.0pt; font-family:GulimChe; bo=
rder:none windowtext 1.0pt; padding:0cm">But now the problem is, unplug cab=
le connection, and do not have access to the onclose ( ) method, this is a =
service deployment in centos6. 2, the
jetty cannot determine</span></b><b><span lang=3D"EN-US" style=3D"font-siz=
e:15.0pt; font-family:GulimChe"> whether the connection<span style=3D"borde=
r:none windowtext 1.0pt; padding:0cm"> is broken?.</span></span></b></p>
<p class=3D"MsoNormal" style=3D"margin-left:12.0pt; line-height:15.0pt; ver=
tical-align:baseline">
<b><span lang=3D"EN-US" style=3D"font-size:15.0pt; font-family:GulimChe">&n=
bsp;</span></b></p>
<p class=3D"MsoNormal" style=3D"text-indent:15.0pt; line-height:15.0pt; ver=
tical-align:baseline">
<b><span lang=3D"EN-US" style=3D"font-size:15.0pt; font-family:GulimChe; bo=
rder:none windowtext 1.0pt; padding:0cm">If the service is deployed in the =
window xp system, unplug cable connection into the onclose ( ) method.</spa=
n></b><b><span lang=3D"EN-US" style=3D"font-size:15.0pt; font-family:GulimC=
he"></span></b></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt; font=
-family:"Calibri","sans-serif"; color:#1F497D"> </=
span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.5pt; font=
-family:"Calibri","sans-serif"; color:#1F497D"> </=
span></p>
<div style=3D"border:none; border-top:solid #B5C4DF 1.0pt; padding:3.0pt 0c=
m 0cm 0cm">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt; font-family:SimS=
un">=B7=A2=BC=FE=C8=CB<span lang=3D"EN-US">:</span></span></b><span lang=3D=
"EN-US" style=3D"font-size:10.0pt; font-family:SimSun"> Brett Wooldridge [m=
ailto:[email protected]]
<br>
</span><b><span style=3D"font-size:10.0pt; font-family:SimSun">=B7=A2=CB=CD=
=CA=B1=BC=E4<span lang=3D"EN-US">:</span></span></b><span lang=3D"EN-US" st=
yle=3D"font-size:10.0pt; font-family:SimSun"> 2012</span><span style=3D"fon=
t-size:10.0pt; font-family:SimSun">=C4=EA<span lang=3D"EN-US">11</span>=D4=
=C2<span lang=3D"EN-US">27</span>=C8=D5<span lang=3D"EN-US">
18:12<br>
</span><b>=CA=D5=BC=FE=C8=CB<span lang=3D"EN-US">:</span></b><span lang=3D"=
EN-US"> [email protected]<br>
</span><b>=D6=F7=CC=E2<span lang=3D"EN-US">:</span></b><span lang=3D"EN-US"=
> Re: [jetty-user] websocket problem</span></span></p>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> </span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">Yin,</span></p>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> </span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">As far as I know, the only way =
to know there was a disconnection is when you attempt to write data to that=
websocket. When a connection is physically unplugged, TCP does not a=
ctually disconnect the socket, because such
an interruption may be transient. In jetty, if you have a class that=
implements WebSocket.OnTextMessage, for example, you can implement somethi=
ng (roughly) like this:</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> </span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">pubic void sendMessage(String m=
essage) {</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> try {</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> connection=
.sendMessage(message); // send message to user's websocket connection</span=
></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> } catch (IOExcepti=
on io) {</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> connection=
.close();</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> }</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">}</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> </span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">@Override</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">public void onOpen(Connection c=
onnection) {</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> this.connection =
=3D connection;</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> // join chat room<=
/span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">}</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> </span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">@Override</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">public void onClose(int closeCo=
de, String message) {</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> if (connection !=
=3D null) {</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> connection=
=3D null;</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> // leave c=
hatroom</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> }</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">}</span></p>
</div>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> </span></p>
</div>
<div>
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><span lang=3D"EN-US">=
</span></p>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US">On Tue, Nov 27, 2012 at 6:40 PM=
, <<a href=3D"mailto:[email protected]" target=3D"_blank">YinZhang=
@wistronits.com</a>> wrote:</span></p>
<div>
<div>
<p><span lang=3D"EN-US">hi all:</span></p>
<p><span lang=3D"EN-US">I am using jetty-hightide-8.0.4.v20111024, the use =
of websocket to make a chat, I encountered a problem, when three people at =
the same time online chat, when suddenly a man unplug cable out of chat, se=
rver is unable to determine the connection
is disconnected, how the server know unplugged network line of human conne=
ction state? Can you help me? Thank you very much!</span></p>
<p><span lang=3D"EN-US"> </span></p>
<p><span lang=3D"EN-US"> Best Regards,</span>=
</p>
<p><span lang=3D"EN-US"> Yin zhang</span></p>
<p class=3D"MsoNormal" style=3D""><span lang=3D"EN-US"> </span></p>
</div>
<p class=3D"MsoNormal" style=3D""><span lang=3D"EN-US" style=3D"font-size:8=
.0pt">*********************************************************************=
*************************************************************************</=
span><span lang=3D"EN-US"></span></p>
<p class=3D"MsoNormal" style=3D""><span lang=3D"EN-US" style=3D"font-size:8=
.0pt; font-family:"Verdana","sans-serif"">This e-mail i=
s confidential for WistronITS corp. It may be legally privileged. If you ar=
e not the Addressee you may not copy,
</span><span lang=3D"EN-US"></span></p>
<p class=3D"MsoNormal" style=3D""><span lang=3D"EN-US" style=3D"font-size:8=
.0pt; font-family:"Verdana","sans-serif"">forward, disc=
lose or use any part of it. If you have received this message in error, ple=
ase delete it and all copies from your</span><span lang=3D"EN-US"></span></=
p>
<p class=3D"MsoNormal" style=3D""><span lang=3D"EN-US" style=3D"font-size:8=
.0pt; font-family:"Verdana","sans-serif""> system =
and notify the sender immediately by return e-mail.Internet communications =
cannot be guaranteed to be timely,
</span><span lang=3D"EN-US"></span></p>
<p class=3D"MsoNormal" style=3D""><span lang=3D"EN-US" style=3D"font-size:8=
.0pt; font-family:"Verdana","sans-serif"">secure, error=
or virus-free. The sender does not accept liability for any errors or omis=
sions.</span><span lang=3D"EN-US"></span></p>
<p class=3D"MsoNormal" style=3D""><span lang=3D"EN-US" style=3D"font-size:8=
.0pt">*********************************************************************=
**************************************************************************<=
/span><span lang=3D"EN-US"></span></p>
</div>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-US"> </span></p>
</div>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:8.0pt; font-=
family:"=D0=C2=BC=9A=C3=F7=F3w","serif"; color:black">*=
***************************************************************************=
******************************************************************</span></=
p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:8.0pt; font-=
family:"Verdana","sans-serif"; color:black">This e-mail=
is confidential for WistronITS corp. It may be legally privileged. If you =
are not the Addressee you may not copy,
</span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:8.0pt; font-=
family:"Verdana","sans-serif"; color:black">forward, di=
sclose or use any part of it. If you have received this message in error, p=
lease delete it and all copies from your</span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:8.0pt; font-=
family:"Verdana","sans-serif"; color:black"> syste=
m and notify the sender immediately by return e-mail.Internet communication=
s cannot be guaranteed to be timely,
</span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:8.0pt; font-=
family:"Verdana","sans-serif"; color:black">secure, err=
or or virus-free. The sender does not accept liability for any errors or om=
issions.</span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:8.0pt; font-=
family:"=D0=C2=BC=9A=C3=F7=F3w","serif"; color:black">*=
***************************************************************************=
*******************************************************************</span><=
/p>
</body>
</html>
--_000_32D3F4B1B1ED1E478B1AC55A596F0E6C011DAAC2TPMS1003wistron_--