|
Nathan
From my limited experience so far, it does seem that if you want tobroadcast you have to build in your own filter to specify who to broadcast
to (assuming that all connected clients is not desired). So you could
create a very efficient filtering mechanism, or a very inefficient one -
depending on your skills :) Obviously the latter negates any perceived
benefits. There is a discussion about this very thing on the jWebsocket
forum. If you have a million connections, and you only want to broadcast
to two of them, you need a pretty efficient mechanism for filtering the
connections - not easy, given that my java skills laughably inadequate.
At the moment, I am not using the broadcast technique at all (apart my
slider demo - which has no practical purpose other than to tell me that my
plug-in code works). I am using an RPC plug-in on the server that accepts
a call from the client to say "I can accept calls". The RPC plug-in then
waits on a keyed data queue for call information directly relating to that
agent/session. When it has one, it performs an RRPC to an authorised
javascript function on the client to pop-up the screen. That is a basic
summary, although it is a bit more involved obviously.
So I am effectively hanging a thread in the jWebsocket server. From what
you have said (and being cognisant of Henrik's last email) I could just as
easily achieve this using normal XHR long waits and not bother with
websockets at all. I guess this is what is meant by long polling - in my
previous emails I should have just said "polling" - not "long polling"
(Thanks Robert).
I am still sure there will be many practical purposes for websockets, but
it is early days for me. What I have learned during this discussion is that
for the CTI problem I wanted to solve, websockets are not the only option.
It has been a very valuable exercise so far though.
Kevin
-----Original Message-----
From: web400-bounces@xxxxxxxxxxxx [mailto:web400-bounces@xxxxxxxxxxxx] On
Behalf Of Nathan Andelin
Sent: 12 July 2012 14:06
To: Web Enabling the AS400 / iSeries
Subject: Re: [WEB400] Websockets on the IBMi
I now see that I was wrong about Web Sockets using a request-response
protocol just like XHR. It helps to use the right Wireshark filter:
Filter: ip.addr == 83.169.11.55
No, Web Socket clients evidently go into "listen" mode after a connection
is established, and the Web Socket server can just stream data to them as
events occur. The Kevins were right about it being a bi-directional
protocol. Servers broadcast messages to client listeners at will. And the
messages don't have HTTP headers, so a Web Socket interface is
significantly more streamlined.
My only caveat to the efficiency advantage of Web Sockets is that various
sources say that compression is NOT in the specification. You can configure
the HTTP server to compress data streams using g-zip; a 250 byte data
stream may be compressed to 40 bytes, for example. That helps in
low-bandwidth scenarios. I'm doubtful about Web Sockets using data
compression.
With respect to jWebSocket, I confirmed that broadcast messages are sent
to all "listeners" on the port. In the demos, Chat clients receive messages
generated by Canvas clients and visa versa, evidently because they are all
listening on the same port 8787.
There's a couple problems with that. First, you'd evidently have to write
client code to filter out messages not intended for your client. And it
voids the efficiency advantage when all messages are broadcast to all
clients. I'm hoping that Kevin Turner will confirm this.
In a call center scenario I can imagine cases where some employees take
calls for one customer while others take calls for other customers. If all
calls are broadcast to all listeners, does the Web Socket client just
filter out those not intended for them?
I'm interested in broadcasting messages to HTTP clients to support virtual
meetings. I wouldn't want messages from one set of meeting participants
being broadcast to participants of other "meetings". No, meeting should be
private.
-Nathan.
--
This is the Web Enabling the AS400 / iSeries (WEB400) mailing list To post
a message email: WEB400@xxxxxxxxxxxx To subscribe, unsubscribe, or change
list options,
visit: http://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/web400.
NOTICE: The information in this electronic mail transmission is intended
by CoralTree Systems Ltd for the use of the named individuals or entity to
which it is directed and may contain information that is privileged or
otherwise confidential. If you have received this electronic mail
transmission in error, please delete it from your system without copying or
forwarding it, and notify the sender of the error by reply email or by
telephone, so that the sender's address records can be corrected.
--------------------------------------------------------------------------------
CoralTree Systems Limited
25 Barnes Wallis Road
Segensworth East, Fareham
PO15 5TT
Company Registration Number 5021022.
Registered Office:
12-14 Carlton Place
Southampton, UK
SO15 2EA
VAT Registration Number 834 1020 74.
--
This is the Web Enabling the AS400 / iSeries (WEB400) mailing list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/web400.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.