When trying to subscribe to a channel named "public" with Meteor, a specialised web server for real-time push using COMET, I get the desired response:
<script>ch("public",0)</script>
When the http request is:
GET /push/131530959548387383/xhrinteractive/public?nc=1315309595740 HTTP/1.1
But when i try to subscribe to a channel named in english and hebrew such as: "tag-קוקאין" and the http request is:
GET /push/1315309516300999786/xhrinteractive/tag-%D7%A7%D7%95%D7%A7%D7%90%D7%99%D7%9F?nc=1315309516590 HTTP/1.1
I get an akward response - the name of the channel became dots:
<script>ch("tag-............", 0);</script>
The file that is responsible of figuring out the header uses this regex:
if($self->{'headerBuffer'}=~/GET\s+$::CONF{'SubscriberDynamicPageAddress'}\/([0-9a-z]+)\/([0-9a-z]+)\/([a-z0-9_\-\%\.\/]+).*?/i)
{
$self->{'subscriberID'}=$1;
$self->{'mode'}=$2;
my $persist=$self->getConf('Persist');
my $maxTime=$self->getConf('MaxTime');
$self->{'ConnectionTimeLimit'} = ($self->{'ConnectionStart'}+$maxTime) if ($maxTime>0);
my @channelData=split('/',$3);
my $channels={};
my $channelName;
my $offset;
foreach my $chandef (@channelData) {
if($chandef=~/^([a-z0-9_\-\%]+)(.(r|b|h)([0-9]*))?$/i) {
$channelName = $1;
$channels->{$channelName}->{'startIndex'} = undef;
if ($3) {
$offset = $4;
if ($3 eq 'r') { $channels->{$channelName}->{'startIndex'} = $offset; }
if ($3 eq 'b') { $channels->{$channelName}->{'startIndex'} = -$offset; }
if ($3 eq 'h') { $channels->{$channelName}->{'startIndex'} = 0; }
}
}
}
I might add that Meteor is a comet server of it's own. it's purpose is to push notifications in real time: meteorserver.org
There has to be a fix for this somewhere.. i tried searching everywhere with no avail. I will be grateful if someone will point me to some direction.