This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Log of /googlecode.com/svn/trunk/Meteor/Subscriber.pm

Parent Directory Parent Directory | Revision Log Revision Log

Links to HEAD: (view) (annotate)
Sticky Revision:

Revision 64 - (view) (annotate) - [select for diffs]
Modified Mon Jan 19 11:19:41 2009 UTC (11 years, 5 months ago) by andrew.betts
File length: 10308 byte(s)
Diff to previous 62 , to selected 55
Release 1.06.04 as documented in Google Group

Revision 62 - (view) (annotate) - [select for diffs]
Modified Thu Nov 27 00:33:21 2008 UTC (11 years, 7 months ago) by andrew.betts
File length: 10330 byte(s)
Diff to previous 56 , to selected 55
1 Fixed: Added SIGPIPE handler.  We noticed that under heavy load
Meteor receives SIGPIPEs from the OS, suspected to relate to clients
that have just disconnected the moment Meteor attempts to write to the
socket.  This caused Meteor to crash.
2 Fixed: Long polling multiple channels no longer causes the loop to
die and restart when some channels have messages queued for delivery.
3 Fixed: Over time, Meteor 'collected' connections from clients that
never got disconnected even if MaxTime was set.  This happened if the
client concerned sent a header with no terminating blank line.  Meteor
kept waiting for the rest of the header, which never arrived, and
therefore the client remained in limbo, never subjected to the MaxTime
time limit because it had not yet become a subscriber.  Clients are
now allowed 30 seconds to send a valid request header.
4 Fixed: If only one message existed on the server, the JS client
would continue to request it again and again, because it has message
ID 0, and the JS client considered this an invalid message ID.
5 Fixed: Corrected some comments in file headers

6 Changed: MaxMessages has been renamed to CloseOnEvent and functions
in a similar, but not quite identical way.  Thanks to Matthew Haak,
who pointed out the extreme confusingness of MaxMessages and a bug
that has resulted in Fix 2 above.  Setting CloseOnEvent to any value
that evaluates to true will cause Meteor to close subscriber
connections after at least one message has been sent and there are no
further messages pending.  This is identical to MaxMessages for values
of 0 and 1, but where MaxMessages is set to a value higher than one,
replacing it with CloseOnEvent with the same value will act as though
it were set to one.  The intent of MaxMessages was to enable long-
polling (and it is used by the JS client in that way), and
CloseonEvent is a drop in replacement for that behaviour.
7 Changed: Meteor JS client now uses dynamic <SCRIPT> tags for all
polling behaviours, rather than XHR.  This enables it to make poll
requests cross-domain (see 13)
8 Changed: Meteor JS client now abstracts timestamp lookups to a
dedicated method.
9 Changed: Default HeaderTemplates no longer include cache busting
headers, since all meteor requests contain a millisecond timestamp and
so no client makes the same request twice.  These were therefore
simply chewing up bandwidth.
10 Changed: Date strings used for logging debug messages are cached to
avoid numerous expensive lookups to localtime().
11 Changed: Channel info is only sent in a response if the client does
not request a restart from a specified ID.  The logic being that if
the client knows the ID they want to start from, they have already
made previous requests and have the channel information they need.
Bandwidth saving measure.

12 Added: JS client now has a Meteor.isSupportedBrowser() method,
which you can call to detemine whether Meteor will run in the user's
browser version.
13 Added: JS client can now use different hosts for polling and
streaming.  This is only really useful if your website is on a domain
that has a lot of cookies, and you don't want to send them in every
poll request.  Removing cookies from request headers can reduce the
size of the request significantly.  We find that with cookies included
Meteor poll requests are usually larger than the responses.  To use,
set Meteor.pollhost.  Meteor.pollhost can be any domain, while
Meteor.host must be a subdomain of your website hostname.
14 Added: Config file now supports new 'FooterTemplate' parameter, for
a string to send just before the connection to the subscriber is
closed.  This is in support of change 7.
15 Added: Better inline documentation for ChannelInfoTemplate config
16 Added: Log output includes connection IDs corresponding to the file
inode for each connection
17 Added: New controller command LISTCONNECTIONS, produces a newline
delimited list of all currently connected clients, and for each one
displaying "ConnectionID IPAddress ClientType [SubscriberID]"
18 Added: New controller command DESCRIBE, takes a ConnectionID as a
parameter, and outputs numerous statistics about that particular
client, including number of messages sent/received, user agent, IP
address, time connected, time remaining until MaxTime etc.
19 Added: New controller comment LISTSUBSCRIBERS, produces a newline
delimited list of all currently connected streaming subscribers, and
for each one displaying "SubscriberID IPAddress Starttime TimeLimit
TimeRemaining MessageCount UserAgent"
20 Added: SHOWSTATS command produces the following additional stats:
connection_count: total current connections, real_subscribers: total
of number of currently connected streaming subscribers plus the number
of unique polling connections seen in the last 60 seconds.
21 Added: STDERR outputs prior to every exit() for debugging purposes
22 Added: The UDP server is now considered stable, and is the best way
of broadcasting messages to lots of Meteor nodes simultaneously and

Revision 56 - (view) (annotate) - [select for diffs]
Modified Thu Feb 28 13:33:06 2008 UTC (12 years, 4 months ago) by andrew.betts
File length: 9336 byte(s)
Diff to previous 55
Fixing subscription to multiple channels, broken by previous commit

Revision 55 - (view) (annotate) - [selected]
Modified Thu Feb 28 00:21:39 2008 UTC (12 years, 4 months ago) by andrew.betts
File length: 9334 byte(s)
Diff to previous 53
Fixed: Made eof() work properly
Added nocache querystring param and modified Subscriber.pm to allow it
Rewrote stream.html to ensure we capture the last chunk of data before a reset
Incremented version

Revision 53 - (view) (annotate) - [select for diffs]
Modified Wed Feb 27 21:58:56 2008 UTC (12 years, 4 months ago) by andrew.betts
File length: 9318 byte(s)
Diff to previous 51 , to selected 55
Updated version number

JS client:
Added channel info handler to JS client, assumes Meteor will send <script>ch('channel', msgid);</script>
Allowed processing of messages prior to current message index
Added disconnect() to eof()
Revert to poll mode if unable to load frame (should fix IE proxy issues)

Fixed output of channel info to show only subscribed channels (and simplified)
Added logging of IP addresses

Revision 51 - (view) (annotate) - [select for diffs]
Modified Wed Feb 27 14:05:59 2008 UTC (12 years, 4 months ago) by andrew.betts
File length: 9293 byte(s)
Diff to previous 50 , to selected 55
Updated default config file
Updated some config narrative
Channel names made more lenient

Revision 50 - (view) (annotate) - [select for diffs]
Modified Wed Feb 27 13:55:35 2008 UTC (12 years, 4 months ago) by andrew.betts
File length: 9288 byte(s)
Diff to previous 49 , to selected 55
Added crossdomain.xml for flash clients
Incremented version number
Moved 'new message' debug notice to more useful location
Moved default for ChannelInfoTemplate to correct position alphabetically in code
Set simpler default HeaderTemplate
Added LogTimeFormat
Updated description of PingInterval, Persist
Corrected misspelling of Parameter
Reformatted debug output for config initialisation
Added recognition of null byte in config
Fixed problem with mode recognition
Fixed resuming from given message ID
Fixed sending of message backlog
Fixed Shlemiels
Logged connection duration on leavechannel
Fixed name support in channelinfotemplate
Added logging of reasons for connection closes
Abbreviated log output
Fixed tracking of subscriber IDs
Added logging of user agent
Fixed incorrect key for MessageTemplate in Subscriber.pm
Add some additional code comments
Fixed incorrect closure of new connection if previous connection close was waiting on write buffer

Revision 49 - (view) (annotate) - [select for diffs]
Modified Mon Feb 4 22:30:35 2008 UTC (12 years, 5 months ago) by knops.gerd
File length: 8839 byte(s)
Diff to previous 47 , to selected 55
• Removed support for numbered header templates and hard coded persist values, use new mode support instead

Revision 47 - (view) (annotate) - [select for diffs]
Modified Mon Feb 4 21:06:42 2008 UTC (12 years, 5 months ago) by knops.gerd
File length: 9402 byte(s)
Diff to previous 45 , to selected 55
• syslog change: If `SyslogFacility` is set to `none`, meteord will not put itself into the background and print all syslog messages with a priority higher than `debug` to standard output. The output will be prefixed with a timestamp (unix time in seconds) and a tab character.

• New syslog messges: joinchannel, leavechannel, document

Revision 45 - (view) (annotate) - [select for diffs]
Modified Mon Feb 4 19:02:49 2008 UTC (12 years, 5 months ago) by knops.gerd
File length: 9264 byte(s)
Diff to previous 44 , to selected 55
• Mode-specific configurations
• New ~channelinfo~ header keyword
• New ChannelInfoTemplate parameter

Revision 44 - (view) (annotate) - [select for diffs]
Modified Sun Feb 3 23:53:55 2008 UTC (12 years, 5 months ago) by knops.gerd
File length: 8482 byte(s)
Diff to previous 39 , to selected 55
• Send SubscriberShutdownMsg on forced disconnect

Revision 39 - (view) (annotate) - [select for diffs]
Modified Sat Feb 2 16:49:20 2008 UTC (12 years, 5 months ago) by andrew.betts
File length: 8483 byte(s)
Diff to previous 37 , to selected 55
Fixed poll mode problems, frame duplication, removed null byte chars

Revision 37 - (view) (annotate) - [select for diffs]
Modified Fri Feb 1 21:22:03 2008 UTC (12 years, 5 months ago) by knops.gerd
File length: 8504 byte(s)
Diff to previous 35 , to selected 55
• Connection: In checkAllHandleBits (and to be sure also in addAllHandleBits) iterate over copy of @Connections, as @Connections might change during iteration due to connections being closed
• Controller, Subscriber: pending data will abort a close and call it again later, causing current_subscribers/current_controllers statistics to be incorrect. Added new 'didClose' method that is only called when a connection is actually closed, and this is where the close is counted.

Revision 35 - (view) (annotate) - [select for diffs]
Modified Fri Jan 25 17:12:02 2008 UTC (12 years, 5 months ago) by andrew.betts
File length: 8481 byte(s)
Diff to previous 32 , to selected 55
Terminated each message with a null byte to allow Flash clients to work with XML Sockets
Cleared a warning
Allowed uppercase channel names

Revision 32 - (view) (annotate) - [select for diffs]
Modified Thu Dec 20 21:24:24 2007 UTC (12 years, 6 months ago) by andrew.betts
File length: 8465 byte(s)
Diff to previous 25 , to selected 55
Complete rewrite of the JS web client
Opera and Safari compatibility
Saner request format

Revision 25 - (view) (annotate) - [select for diffs]
Modified Sun May 20 19:40:53 2007 UTC (13 years, 1 month ago) by knops.gerd
File length: 9348 byte(s)
Diff to previous 17 , to selected 55
• Add simple statistics, available via new SHOWSTATS controller command

Revision 17 - (view) (annotate) - [select for diffs]
Modified Tue May 1 17:10:10 2007 UTC (13 years, 2 months ago) by knops.gerd
File length: 8913 byte(s)
Diff to previous 13 , to selected 55
• Make persist a global instead of channel-specific parameter

Revision 13 - (view) (annotate) - [select for diffs]
Modified Mon Apr 30 18:16:17 2007 UTC (13 years, 2 months ago) by knops.gerd
File length: 9147 byte(s)
Diff to previous 11 , to selected 55
• Allow to subscribe to multiple channels

Revision 11 - (view) (annotate) - [select for diffs]
Modified Thu Dec 14 16:29:42 2006 UTC (13 years, 7 months ago) by knops.gerd
File length: 7847 byte(s)
Diff to previous 9 , to selected 55
• Change CRLF line endings back to LF only

Revision 9 - (view) (annotate) - [select for diffs]
Modified Fri Dec 8 16:52:58 2006 UTC (13 years, 7 months ago) by andrew.betts
File length: 8194 byte(s)
Diff to previous 3 , to selected 55

Revision 3 - (view) (annotate) - [select for diffs]
Added Mon Nov 20 17:59:30 2006 UTC (13 years, 7 months ago) by andrew.betts
File length: 7847 byte(s)
Diff to selected 55
Initial import

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

  ViewVC Help
Powered by ViewVC 1.1.26