4-Jan-2010 - OS News is announcing Cheyenne new Web Socket support! [0020]
You may have heard about Web Sockets. This extension of the HTTP protocol provides a mean for having long-lasting connections between client browsers and web servers in a clean and efficient way.
Cheyenne jumped a few days ago in the new real-time web bandwagon by, not only supporting the new protocol, but also providing a new simple framework for those new kind of web applications. This new framework integrates nicely with the existing RSP engine benefiting from its multitasking abilities.
OS News published a
nice article yesterday, written by Kaj de Vos from the
Syllable OS team, announcing that Cheyenne supports now web sockets. Thanks to Kaj for pushing it up.
You can checkout this new version from the SVN repository (see
Download page for info on how to checkout).
Chrome 4 is currently required to use Web Sockets. Hopefully, more browser will support it soon as part of the HTML5 feature set.
Here's the full server-side source code of the Chat demo application :
install-socket-app [
name: 'chat
;-- stores [port! string!] pairs
users: make block! 10
history: make block! 50
;-- send same data to all connected users
broadcast: func [msg][
foreach port clients [send port msg]
]
on-connect: func [client][
;-- send messages' history to new user
foreach entry history [send client entry]
;-- send connected users list
foreach [port user] users [send client user]
]
on-message: func [client data][
;-- escape all html tags for security concerns
data: copy data
replace/all data "<" "<"
replace/all data ">" ">"
switch data/1 [
#"m" [
;-- insert [hh:mm:ss] time prefix
insert next data join remold [now/time] " "
append history data
;-- keep only 50 messages in history
if 50 <= length? history [remove history]
]
#"u" [
if not find users data [
;-- keep users list updated
repend users [client data]
]
]
]
;-- broadcast messages to all users
broadcast data
]
on-disconnect: func [client /local pos user][
pos: find users client
user: pos/2
remove/part pos 2
;-- send user quit message to everyone
broadcast head change user #"r"
]
]
Hope you'll enjoy this new toy. ;-)
1-Mar-2009 - Cheyenne 0.9.19 released [0019]
Finally the new version is out! It took a lot of time to finish and polish this one before public release. A lot of issue and bugs have been fixed in this release.
Download here the source package.
ChangeLog (main points only, see all details in %changelog.txt in the source archive)
- General
- Now compatible with REBOL 2.7.6
- Port numbers can now be specified for virtual host definition in config file.
- PHP support greatly improved, it's now stable
- New 'alias config keyword : alias "/path/target" %script
- New 'disable-log config keyword to disable HTTP log per domain or webapp
- READ-CGI standard mezzanine now fully supported in CGI
- It's now possible to reset all worker processes without restarting the server
- New -w command line option to set the worker processes number
- RSP
- Sandboxing now forced on webapps.
- DO redefined to bind to webapp's context
- Production mode now by default (no error logging on screen)
- Webapps can now be called without the trailing slash in URL
- RSP output is now compressed using deflate algorithm if client supports it
- Debugging improved : several new functions now allow logging into a trace file
- New 'error-page keyword to define a custom error page in webapps
- New 'worker-libs config keyword for defining default library to load for RSP/CGI
- RSP API documentation updated
A big thank to Will and Oldes for providing patches included in this release.
The
Roadmap has also been updated. Still a lot of work until v1.0, having a web-based admin panel and enough documentation are the main missing points. I hope to reach this milestone before the end of the year.
5-Jun-2008 - The indian has moved to a new tipi! [0018]
The migration is now almost completed. Cheyenne's blog is here, the bugtracker will be integrated soon too, a wiki (Mediawiki) will be added also to let the community help me write a good online documentation.
Finally, Cheyenne has its own web site! \o/
About next Cheyenne release (0.9.19), it's delayed for a few more days to give me some time to make the PHP FastCGI link more robust and able to resist to various automated online attacks without freezing as in current version.
Cheers!
19-Feb-2008 - Binaries for v0.9.18 [0017]
You can find the binaries for Cheyenne v0.9.18
here.
19-Feb-2008 - Cheyenne v0.9.18 released [0016]
Download here the source package.
-
FastCGI: enhanced implementation to support POSTed data larger than 64K.
-
'do-events now wrapped in a loop. (improves uptime)
-
Fix for lower/uppercase log files issues.
-
Fix PHP-fastcgi idle connection timeout issue.
-
Client connection will now be closed after sending a 405 response. (avoids processing useless data)
-
Log files access errors are now trapped. (improves uptime)
-
Fix for premature event loop exiting (was introduced in previous release).
-
RSP: bug fixed in accessing ressources in /public sub-folders.
-
RSP: fix for databases connection URL loading from config file, now attempting to load from disk first, then if failed, from memory cache.
-
Fix for bad URLs like /path/file.ext/ crashing Cheyenne.
(by fixing the buggy 'info? mezz)
-
UniServe: Added -q to slave processes command-line.
-
Enhanced 'on-status-code support, can now be declared at domain or webapp level.
-
Fix for a security issue on Windows: /..%5C.. URL forms are now catched
preventing an attacker from getting files out of the www root directory.