REBOL3 - !Uniserve (Creating Uniserve processes [web-public])

Return to Index Page
Most recent messages (300 max) are listed first.

#UserMessageDate
664DockimbelIn your Uniserve service, build a list of ports with every client connecting (on-new-client event). When required, walk through the list of ports and broadcast whatever you want to the selected ones (or everyone). See this Chat application server-side source as an example of how to achieve that (it's not an Uniserve service, but it's very close anyway) : http://cheyenne-server.googlecode.com/svn/trunk/Cheyenne/www/ws-apps/chat.r

The resulting chat application is here : http://demo.cheyenne-server.org:8080/chat.html

13-Jan-10 22:52
663BarikBasically, I need a way to do client to client communications with Uniserve, much like say a chat server.13-Jan-10 15:35
662BarikIf I have a Uniserve service that I've created, and two clients (say, A and B) connect to this service, how can I have A send a message to B?13-Jan-10 15:34
661WillWhat is distributed actors library? sounds interesting 8)21-Nov-09 2:14
660JankoI was looking at uniserve today .. really nicely made .. especially if you know that uniserve is running cheyenne which runs so fast and well .. I will port my distibuted actors library to use uniserve21-Nov-09 0:14
659Graham( this group is not supposed to be private - made public )26-May-09 23:30
658GrahamHas anyone written a IRC server in Uniserve?26-May-09 23:29
657MaartenYes, but that's not working - someting with async ports. I have something on top of Rugby that works, but it's too slow.21-Feb-09 21:48
656Jankoaha, I found this http://www.colellachiara.com/soft/Libs/chord.r21-Feb-09 19:17
655Jankohm.. interesting.. is there any more info about it on web somewher? ( btw: I remember I played with Rugby 8-10 years ago when I was allround programming newbie, it looked like total magic to me)21-Feb-09 19:16
654Maartenyes21-Feb-09 18:58
653JankoChord.. is this that discributted hash table or something else?21-Feb-09 18:26
652MaartenNenad, this may help you: http://www.colellachiara.com/soft/Libs/timers.r21-Feb-09 16:30
651MaartenFirst ugby on Uniserve. Then Chord on top of that.... Chord on Rugby is already working.21-Feb-09 16:25
650DockimbelStability maybe? ;-)20-Feb-09 18:49
649Pekrbtw - what is missing in R3 to start porting of Uniserve to R3? Higher level protocols? Or tasks?20-Feb-09 9:59
648PekrMaarten - what about Chord concept, is it still valid? Or is there anything better out there worth implementing?20-Feb-09 9:58
647PekrRugby to the rescue! I always wanted general multiplexing architecture being part of REBOL natively, but then I also wanted simplicity of Rugby. Now I will get both? :-)20-Feb-09 9:57
646MaartenNo, this will be world domination ;-)20-Feb-09 8:29
645GrahamIs this convergence ? :)19-Feb-09 19:23
644DockimbelThat feature is waiting for weeks to be implemented (need it for adding a mail relay agent to Cheyenne and for cron-like jobs scheduling), I'll give it some time this weekend.19-Feb-09 13:33
643MaartenThe rest will be porting transport and state machines on the server, but as Rugby already had a CGI interface it hould be simle to use the server with Cheyenne.19-Feb-09 9:04
642MaartenThe balloon goes up! I want to move Rugby's transport layer to Uniserve, or even better, Cheyenne. (http tunneling). For this to really work I only need to know if you have primitives for timers in the event loop (inside the 'wait): do-every time! [ code ] do-after time! [code]19-Feb-09 9:03
641DockimbelRight, controling bandwidth requires changing UniServe's internals, mostly in 'on-write handler.21-Jan-09 21:55
640Oldesprobably no.. just found it as you told me, that I should control the data from it.21-Jan-09 21:49
639DockimbelBtw, 'on-write is not disabled in UniServe, it's just no more directly called in that specific case.21-Jan-09 21:49
638DockimbelIt was useful on client side to kickstart first packet sent to a server (kind of fast shortcut to avoid a round in event loop before sending the first packet), but I had more issues than benefits from it, so I left the code deactivated in case I would need it in future, but it looks like I could remove those lines. Do you have a need for it?21-Jan-09 21:47
637DockimbelRight, that was a workaround for a packet sending issue, but never had to reactivate it.21-Jan-09 21:42
636Oldes0.9.17 21/12/2004 { o Added 'on-write-done event. o 'on-write call in 'write-peer temporaly deactivated. o bugfix in 'open-port, custom port-id now correctly used. }21-Jan-09 21:40
635Oldes; --- temporary deactivated ;on-write port21-Jan-09 21:39
634DockimbelWhat makes you think that?21-Jan-09 21:28
633Oldeson-write is dissabled in the recent versions. Why?21-Jan-09 20:59
632NickAthay -> that21-Jan-09 5:20
631NickAI need to learn more about thay!21-Jan-09 5:20
630Jankowow, audio streaming in rebol and uniserve .. cool20-Jan-09 23:41
629DockimbelOldes: thanks for taking the time to test it. The correct behaviour of WAIT is the one you've described. I'm glad you've corrected me on that one. I'm pretty sure that I've run such tests with different results when working on UniServe five years ago. Maybe something changed in REBOL kernel since then or maybe my test script was just flawed. Nice to see that there's still something to learn from R2.20-Jan-09 22:55
628SteeveSo Doc was wrong, it's unusual...20-Jan-09 21:45
627OldesAnd running my RebolBB with responses <16ms20-Jan-09 21:43
626OldesIn the same time it was serving MP3 from modified micro-http service using something like: on-received: func [data][ write-client rejoin[ {ICY 200 OK} crlf {icy-name: LocalRadio} crlf {icy-genre: whatever} crlf {icy-url: http://127.0.0.1:811} crlf {content-type: audio/mpeg} crlf {icy-pub: 1} crlf {icy-br: 128} crlf crlf ] write-client path-to-mp3-file close-client ]20-Jan-09 21:40
625Oldesjust tried to add this before cheyenne starts: do-events: does [ forever [wait [0:0:1] print now/time/precise] ] And from second console run: loop 1000 [read http://localhost]

the result is, that it prints the time in every second while it serves the requests.

20-Jan-09 21:37
624DockimbelNot sure about the WAIT [port1 port2 ...] case. I guess that it will process all events from system/ports/wait-list but will exit on first event received by port1, port2,...20-Jan-09 11:33
623DockimbelWhen called with [ ] or [ integer! ], WAIT will process all ports stored in system/ports/wait-list. In that case, WAIT will block until : - a timeout is specified and no more events are received for that timeout period - an event returns a TRUE value.20-Jan-09 11:30
622DockimbelWAIT has many different behaviours depending on the passed argument.20-Jan-09 11:25
621Pekrbut - you surely know what you are talking about, so I have to be wrong :-)20-Jan-09 10:53
620Pekr"As long as you get any event happening before a timeout occurs, you'll stay in the WAIT event loop." - Doc - is it really correct? I am far from being guru here, but it sounds strange - that would mean, that as far as there are events coming, you are not allowed to quit wait, no? I think that 'wait waits for either the event, or an timeout to occur. If there is any kind of event on port in wait-list, 'wait return. It can either return with first port with event, or, when using /all refinement, with block of all ports, which have event available on them at the time of return ...20-Jan-09 10:53
619Pekrhow can you do it in terms of single process?20-Jan-09 10:49
618DockimbelWAIT [0] should return just after the first event is processed, but that's not the point. It's about being able to send the same amount of data every seconds.20-Jan-09 10:47
617OldesAh.. I see Doc, that is a problem.. so it looks I will have to write the data from 'on-write. Just will have to find out, how to make it synced, because I would like to have all listeners play the sound in the same moment. If it's possible.20-Jan-09 0:15
616Steevemaybe wait [0] works too19-Jan-09 23:52
615Steevewhat the prob ? if you do a wait [0.001] it should process one event at a time.19-Jan-09 23:49
614DockimbelAs long as you get any event happening before a timeout occurs, you'll stay in the WAIT event loop.19-Jan-09 23:24
613DockimbelFor example, if you have, on average, one network event (port opening, packet coming, packet to be sent (async write),...) every 0.5sec, it's enough to delay the exit from your WAIT [ 0:0:1 ] for several seconds or even minutes.19-Jan-09 23:21
612OldesWhich events? Even the on-write events? Not being called in precise interval would not be a problem. I think.19-Jan-09 20:36
611DockimbelWait [ 0:0:1] won't work as you expect. You don't have any guaranty that it will exit from the loop every seconds. It depends on network activity. The time! value indicates a timeout duration from last network event.19-Jan-09 18:25
610OldesI will test it anyway19-Jan-09 15:52
609Oldesit should be wait [ 0:0:1]19-Jan-09 15:48
608DockimbelUniServe would be then useless, because it couldn't work in async mode.19-Jan-09 14:55
607?I wouldn't think that wait would be working like that. I think you can only use wait [] to process the wait-list.19-Jan-09 14:54
606DockimbelI don't remember if WAIT is processing network events when called with a time! value. If it's not processing events, your writes would have to be in blocking mode, so sending data one after another.19-Jan-09 14:53
605OldesWill... I want to make a private mp3 stream server to play music on a local network. So it must be solved on the server side... read only enough sound data from disk to play and distribute it to listeners. I have already the mp3 parser to get for example enough data to play during specified interval of time. Now it's just how to distribute it and don't send more data than is necessary for the listeners.19-Jan-09 12:54
604OldesSo you think that using something like: ... uniserve/boot/no-wait forever [ wait 0:0:1 foreach-listener-write-enough-data-to-play-1s ] ... is not good approach? I think I cannot do it from 'on-write as this would require to have separate input for each listener, which I don't want. What happens is I write on port which does not finished previous write?19-Jan-09 12:49
603Willmaybe you can get what you want with iptables or ipfw (on os x it's ipfw)19-Jan-09 10:05
602DockimbelThe forever loop is : wait [ ]. How can you provide your own one? Limiting bandwidth would require control of data sent per seconds from 'on-write UniServe's callback. That means storing a timestamp of last sent packet and calculating the length of next packet based on time passed from last sent packet and bandwidth limit.19-Jan-09 10:00
601OldesAnd in the loop write only so much data, as needed into connected clients.19-Jan-09 2:01
600OldesI guess by starting Uniserve as uniserve/boot/no-loop and providing own forever loop, am I right?19-Jan-09 2:00
599OldesWhat would be the best way how to limit server's output bandwidth using Uniserve? For example if i would like to write a stream server.19-Jan-09 1:49
598Oldes( WINDOWS\system32\drivers\etc\hosts )16-Dec-08 0:35
597Grahamhost file14-Dec-08 23:04
596DanielPHello, how can I choose the name of a server (other than "localhost") ?14-Dec-08 21:29
595DockimbelClosing just after sending command : should work.20-Oct-08 8:47
594PeterWoodI think I'll have to put that in my too hard basket :)20-Oct-08 0:05
593GrahamI wonder how just opening a port to Cheyenne and inserting the command, and then closing immediately would work??19-Oct-08 23:48
592GrahamBut really I was enquiring about the principle involved in running a blocking process on Uniserve.19-Oct-08 23:41
591GrahamOh ..., I put Festival in the too hard basket long time ago :)19-Oct-08 23:40
590PeterWoodFestival appears to run on Linux, BSD, Solaris and Wndows...only Mac seems to be missing from the list.19-Oct-08 23:40
589GrahamAnd there are some web services that provide much higher quality than MS's speech.19-Oct-08 23:35
588GrahamPeter, yes, but I'm not aware of such facility on Linux.19-Oct-08 23:35
587PeterWoodGraham: Have you consiered the alternative approach of calling a text-to-speech program on the client?

Of course, this facility is builtin to Mac OS.Google pointed me to this for other clients : http://www.cstr.ed.ac.uk/projects/festival/download.html

19-Oct-08 23:05
586Graham:)19-Oct-08 22:03
585Dockimbel...for the helper process (not you being silly) ;-)19-Oct-08 22:02
584Dockimbelexactly19-Oct-08 22:02
583Grahamsilly me19-Oct-08 21:58
582Grahamahh... okay, since speak.rsp is already been run by one of those helper processes19-Oct-08 21:58
581DockimbelDo it in your speak.rsp, it should be ok as long as your call/launch is not blocking.19-Oct-08 21:57
580Grahamie. to run the call for me?19-Oct-08 21:51
579Grahamis there a way to get one of those helper processes to do this?19-Oct-08 21:51
578DockimbelRight, you use LAUNCH or CALL.19-Oct-08 21:48
577Grahamie. don't wait for the result19-Oct-08 21:47
576GrahamSo, I guess I just need to use call instead which is async and returns immediately19-Oct-08 21:46
575GrahamJust thinking of creating a general purpose app so not necesssarily19-Oct-08 21:46
574DockimbelYou can't send back a response to the client without ending the RSP processing. Uniserve is not loaded in helper processes, so you can issue async read requests. Is your client REBOL-based ?19-Oct-08 21:41
573Grahameg. client => read http://localhost/speak.rsp?txt=hello%20world

speak.rsp <% data: read/binary http://somewebserivice/cgi-bin/to-wave?text=hello%20world insert sound-port data %> <html></html>

in this scenario the client has to wait for the response. How would one send the empty result back immediately, and then process the request so that the client is not blocked and where the client is incapable of an async read

19-Oct-08 19:34
572GrahamI've got Univserve/cheyenne running on localhost. I want my client to ask uniserve to download a file using one of it's processes and then play it through a sound port. My client uses a http request and wants that to be non blocking ie. return immediately. The client may itself not be capable of doing an async request.19-Oct-08 18:12
571TerryWhich means leaving the connection open.. not sure how Cheyenne would deal with this19-Oct-08 16:19
570TerryYou can't send a response, then another and another unless you use Comet technologies19-Oct-08 16:18
569DockimbelSo, if I understand correcty, you need to download a file on client side from a web server without blocking on the client side ?19-Oct-08 14:15
568GrahamSince any client could be accessing the cheyenne server, I want a response returned immediately so that it doesn't block the client. And the sound can be played later on ...19-Oct-08 9:34
567GrahamDoc, what I want to do is do some text to speech using a 3rd party web service. I need to download the generated wave file and play it by inserting it into a sound port. The read would be blocking if I use sync read, and then playing it thru a sound port in my experience does interfere with async tcp. In a nutshell, is this sort of activity suitable for a task-master service .. and is there a simple sample of such a service? The task would be triggered from an RSP page19-Oct-08 9:32
566BrianHYou could take advantage of Uniserve's task dispatch and process management to do load balancing between LNS servers.2-Mar-08 16:30
565?Wouldn't LNS currently have the same problem as Uniserve with respect to mono-processing?2-Mar-08 16:30
564BrianHI wonder if it would make sense to make some kind of a multi-LNS layer over Uniserve.2-Mar-08 16:29
563?I think that Doc has the most available and supported Async offering right now that can even quality for my needs.2-Mar-08 16:14
562BrianHOf course.2-Mar-08 16:12
561?I do see the problem Brian.2-Mar-08 16:11
560BrianHNot discouraging you, just warning you :)2-Mar-08 16:10
559BrianHPaul, you'd still need to think about all of those concurrent consistency problems if you went multi-threaded. Without serialization of some form, concurrent use will still be an issue, whether you are using processes or threads.2-Mar-08 16:09
558?Thanks Doc.2-Mar-08 15:47
557KajI'm currently integrating the UniServe software stack into Syllable Server2-Mar-08 15:43
556DockimbelIn that case, you need to rely on slave processes, each one executing TRETBASE. This means that you have to set up a distributed architecture, think about disk-writing synchronization between slaves, caches consistency,... All these could be easier done if we had multi-threading support in REBOL. It can be done without, but it's more complex and much less efficient.2-Mar-08 10:07
555?I would most likely have a lot of that going on with TRETBASE since the searches could take some time to produce results.2-Mar-08 0:37
554DockimbelTo determine if you can leave the work inside the callback, just do some simple maths. E.g., if a request needs 50ms to be processed, that means that your server cannot do more than 20req/s. So it also depends on the load your server need to handle.1-Mar-08 23:59
553DockimbelSo, you should be concerned about not doing heavy computation inside network event callbacks (like in 'on-received). If longer processing is needed, you should use the task-master service in Uniserve to send the request to a slave process (this has also the advantage of fully using the power of modern multicores processors).1-Mar-08 23:56
552DockimbelThe main process (Uniserve process) should only do minimal work in processing port events so that other events can be processed in a short delay, giving the feeling of multitasking with several clients.1-Mar-08 23:51
551DockimbelCheyenne uses the latest Uniserve's version. There's no special version of Uniserve for Cheyenne, so it's mono-thread. Uniserve also brings IPC between several slave processes using the task-master protocol (part of Uniserve, used in Cheyenne to run CGI and RSP scripts).1-Mar-08 23:49
550?Doc, does the Cheyenne version of Uniserve also have the mono-thread execution. If so, what should I be concerned about with regard to blocking?1-Mar-08 18:46
549GrahamNot yet ..but wanting to make sure that forks are folded back in :)27-Feb-07 18:31
548Oldesgraham: what I know, my postgres driver changes are not in the original version. At this moment I'm not using it as I even don't have postgres installed. Do you need it?27-Feb-07 10:50
547Pekrhehe ... well, they are mostly MS based - tried their website and I got some aspx Microsoft db OLE provider error. Will have to talk to guys a bit :-)26-Feb-07 20:30
546GrahamIf you're going to head IT services at this new company .. perhaps you could get someone to write this :)26-Feb-07 20:15
545PekrWell, hmm, why not, right?26-Feb-07 20:04
544Pekr:-) How would it be usefull?26-Feb-07 20:04
543Grahamnot if someone uses uniserve to write a driver :)26-Feb-07 19:53
542Pekrhmm, wrong channel, sorry...26-Feb-07 19:50
541Pekreh? I thought that Firebird is being regarded being one of the best open-source offerings? No driver documented? Strange - each language except the Rebol has driver, so how they did it?26-Feb-07 19:50
540Grahamthere is a client java module in CVS26-Feb-07 19:32
539GrahamI asked a year ago on the developer list .. they said, don't even think about it!26-Feb-07 19:28
538Maximmaybe someone else did this and documented it? somewhere on the net... just thinking loud...26-Feb-07 19:28
537GrahamOr, to try and reverse engineer the protocol from another product26-Feb-07 19:27
536GrahamIt has an undocumented tcp protocol .. so for Linux, there is no option but to move to something else26-Feb-07 19:27
535PekrGraham, btw., what would be needed for Rebol FireBird support? Does it use typical tcp scheme as mySQL e.g.? This week I met with two ppl using FireBird, and there seem to be no answer from Rebol part. Well, maybe ODBC, but that is not free ...26-Feb-07 19:24
534Grahamoff topic oldes, but are your postgres driver fixes folded back into the offficial driver ?26-Feb-07 19:20
533OldesYes, but if you know how works server, you should know client as well:]26-Feb-07 19:11
532GrahamI'm looking more for client than server :)26-Feb-07 19:10
531Oldesbut at this moment have other things to do26-Feb-07 19:05
530Oldesmaybe I could try to rewrite it26-Feb-07 19:04
529OldesI have somewhere testing script (not for uniserver) working as simple ftp server.26-Feb-07 19:04
528DockimbelNever really investigated deeply such construction, but at first look, I don't see any issue doing that.26-Feb-07 19:03
527DockimbelIt would require to control a "data port service" from a "command port service".26-Feb-07 19:00
526DockimbelNot yet, but I would like to add one.26-Feb-07 18:58
525GrahamOr, at least an example of a uniserve client copes with using a command and a data port.26-Feb-07 18:56
524GrahamIs there a ftp client for uniserve?26-Feb-07 18:56
523GrahamHe wouldn't drink Jaime's free beer! ...14-Feb-07 2:41
522PekrRebolek - that is for sure!13-Feb-07 21:18
521Rebolekso if we bring some czech beers, we can probably get whole source code? ;)13-Feb-07 19:57
520Henrik"after several beers last year in Paris, Carl told me that..." oh, so that's how it works! pardon me, I couldn't help it. :-)13-Feb-07 18:40
519DockimbelAbout server-side SSL : after several beers last year in Paris, Carl told me that the ssl:// scheme could be turn to work as server-side with just the right flag set (IIRC, was about setting the right "direction" in encryption), then you "just" have to implement server-side HTTPS protocol to support it fully. I've since that, tryed several times to get the info about the "magic flag" from Carl, without success. So I've prepared several dozens bottles of beer to be sure to get the info from him at the next DevCon ;-).13-Feb-07 18:33
518Maximexactly the kind of snooping I'd add too :-)8-Feb-07 21:50
517OldesAt the beginning I modified it a little bit to better print out urls and to save favicon files if found while browsing:)8-Feb-07 21:50
516Maximhum... and I was just wishing a stable proxy was available in rebol last week for some testing... thanks! for the info.8-Feb-07 21:49
515OldesThe source is in %services/proxy-http.r8-Feb-07 21:47
514Oldesyes, and it's the best Rebol proxy I used. Just: uniserve/boot/with [services [proxy-http] protocols [http]]8-Feb-07 21:46
513Maximhum... uniserve can work as a proxy ?8-Feb-07 21:37
512OldesMust say, that I'm all day using the proxy service from the latest uniserve and have no problems with it. It's fast enough even when streaming videos:) It's quite fun to watch what files are transfered while surfing.8-Feb-07 21:22
511Maxim(and apache is good at handling thousands of requests without crashing)8-Feb-07 17:32
510Maximit also allows us to spread connections over many machines/threads virtualise the port and all that nice stuff without actually having to code it.8-Feb-07 17:31
509MaximIf I had time I would have done it much before, but we ended up using apache and a reverse proxy setup... and that works really well.8-Feb-07 17:30
508Mcheando i smell a competition?8-Feb-07 17:29
507Maximall the actual core needs are within... its just a question of reading the rfc (or implementation guides, or books) and using the encryptions funcs within REBOL... but I'll agree its not for the faint of heart... I've read a lot about server-side ssl implemtation a few months ago and its quite laborious. But still doable.8-Feb-07 15:43
506Ladislav(you can implement it in REBOL)8-Feb-07 14:52
505Ladislav:-)8-Feb-07 14:52
504Ladislavclose but no cigar again8-Feb-07 14:52
503Grahamlet me rephrase that .. no one outside of RT and their contractors know how to do this.8-Feb-07 8:33
502Ladislav"Rebol can't do server side SSL" - close but no cigar, actually, it is not that hard8-Feb-07 8:16
501GrahamSo, without server side SSL, Cheyenne can't do https .. unless it's thru stunnel.8-Feb-07 1:28
500GrahamRebol can't do server side SSL ... Carl thought it could by changing a flag, but it does not work when it was tested.8-Feb-07 1:28
499GrahamSessions are broken in cheyenne. Basically session data from one client ends up as session data in another :(8-Feb-07 1:27
498BrianHReading is client-side SSL.7-Feb-07 19:54
497Oldesok... doc' seems to be online now, as he emailed me almost immediately:

I'm aware of this problem (cgi and paths). It's because the encap-fs system is not correctly supported in this version of UniServe (it's ok in the Cheyenne package). I didn't fixed it because, with the release of Cheyenne, I'm not sure to keep the CGI support for the HTTPd service in the UniServe package. I may just provide a static HTTPd server with hooks to extend it or embed it in user applications. v1 of UniServe have to be very easy to embed in any app (that's one of main goals).

7-Feb-07 19:52
496Henrikwell, command can read https pages...?7-Feb-07 19:52
495BrianHI don't know how it would have HTTPS server support, even with /Command. I thought /Command only has SSL client support.7-Feb-07 19:51
494OldesI don't know how it's with https, I don't have /command7-Feb-07 19:49
493BrianHYou mean HTTPS?7-Feb-07 19:48
492Oldesthe chayenne is just encrypted uniserve7-Feb-07 19:47
491Oldesthere is file %libs/cookies.r so one can take a look at it, if needed7-Feb-07 19:46
490BrianHSurely you are not surprised that Doc would disappear abruptly? He seems to have even less time than I do.7-Feb-07 19:46
489PekrBrianH - of course if you don't need sessions, httpd is probably working well. I just did not understand the Cheyenne release. The simple demo did not work. There is a demo with screen divided into something like 4x4 subwindows (frames), and most of them times out. Doc told me session layer is about to be rewritten, then no word from him for another few months7-Feb-07 19:43
488OldesI don't know what is with sessions. The uniserve seems to pretty good to me. I'm using it. And I think that Doc is still Reboling, probably just don't have so much time.7-Feb-07 19:40
487BrianHDo you mean that sessions are non-working, or that there is something about non-working sessions that makes HTTP (a stateless protocol that wouldn't normally need sessions) not work?7-Feb-07 19:34
486Pekris Doc going to be back on Uniserve or Chayanne? Without fixed sessions it is mostly non working httpd server7-Feb-07 19:30
485OldesYes, we had a short electronic contact :-) In this archive are the proxy and httpd services working without need of changes, the cgi test seems to give me an error so probably this will need some fix.7-Feb-07 19:22
484Pekrbtw - what fixes it needs?7-Feb-07 19:03
483Pekrhe is in contact with you?7-Feb-07 19:03
482OldesI've got this newer Nenad's version of UniServe http://box.lebeda.ws/~hmm/rebol/UniServe-r0991.zip (but as he said - beware, it needs several fixes and updates to become a 1.0 candidate)7-Feb-07 17:29
481Oldesand I'm not using most of the files. (At least now)30-Jan-07 21:24
480Oldesas the one above30-Jan-07 21:22
479Oldesit works, but you have to do some small changes:-)30-Jan-07 21:22
478Pekrso new version, 0919 does not work s is?30-Jan-07 21:21
477OldesI'm slowly moving forward:) after a few hours I almost have what I already had but using new uniserve:)30-Jan-07 21:14
476OldesThis was quite important difference as my scripts were still using response (so I was getting result = none)30-Jan-07 21:11
475Mcheanso the project - moving forward - contains encapped modules?30-Jan-07 21:10
474Pekrbut 0.919 is provided with no documentation ... what is the difference then?30-Jan-07 21:08
473Oldeshmm.... maybe if someone was using uniserver 0.9.9 and want to upgrade, there was important change - instead of module/response there is now module/result30-Jan-07 21:07
472Oldesso what is here is Cheyenne in some unfinished state30-Jan-07 19:54
471Oldesand if you look into cgi code in the UniServe archive, you can see, it identifies itself like soc/server-software: "Cheyenne/1.0"30-Jan-07 19:53
470Oldesech.. no, the compression should be in version 1.030-Jan-07 19:49
469Oldes(not just httpd as it is able to do for example bzip2 compression so it probably needs some libs)30-Jan-07 19:48
468OldesYes, the encapped part is the httpd service. You can see, that in Cheynne archive there is a little bit newer uniserve engine - 0.9.2030-Jan-07 19:45
467Pekrand do we have access to that httpd source? Cheyenne is encapped, no?30-Jan-07 19:29
466OldesYes, the most recent version is newer httpd service which is called Cheynne :)30-Jan-07 19:27
465PekrI tried to contact him few days ago, and asked him for some more recent version. I somehow believe, that if he really uses it for his own stuff, he has to have some things fixed already :-)30-Jan-07 19:19
464Oldeshe just gave us some sources to play with30-Jan-07 19:17
463Oldesit's not realease30-Jan-07 19:17
462PekrLater on he told me session handling is going to be rewriten, but then he left scene for another few months probably :-)30-Jan-07 19:17
461OldesAt least I use it for such a scenario, which takes more than 10secs to process30-Jan-07 19:17
460Pekryes, but its session support sucks. I really don't understand, how Doc could release it, as it miserably fails. Have you tried multiple pane demo?30-Jan-07 19:16
459OldesPekr: and if you need to process something which will take 10secs, Uniserve should be good in that.30-Jan-07 19:16
458OldesAnd don't forget, that Chayenne is made on Uniserve, it will be probably some more uptodate version:-)30-Jan-07 19:14
457PekrUniserve is imo kind of engine we SHOULD adapt and include in the core. In the case of R3, using native R3 tasking ...30-Jan-07 19:14
456PekrMaarten later on introduced so called "green threading" (?), so you can divide your exposed function functionality in several or many parts, to get better granularity. Then he introduced chaining- so that e.g. main Rugby process could become kind of proxy, and forward (chain) request to other instance. But then there were some problems iirc and Maarten left its development.30-Jan-07 19:13
455OldesPekr: I'm using uniserve as well for some time, but version 0.9.9 I found some time to look at the version 0.9.19 now so I'm examining it, and must say, that's just a quick pack of some files.30-Jan-07 19:13
454PekrMchean - In the past I really loved Rugby - if you want to start with something, and learn something (RPC), it is really a good choice (Rugby). Very simple to use. What I did not liked was - its lack of asynchronicity. E.g. in Rugby you select your function of exported (so callable over the tcp/ip network). But if such function does something for 10secs, then all Rugby is blocked and it is not able to accept further requests.30-Jan-07 19:11
453PekrOldes - what does your task master fix fixes particularly?30-Jan-07 19:09
452PekrThat all sounds really strange, as Doc was claiming they use Uniserve in production for several customers or so, for quite some time ...30-Jan-07 19:09
451Oldesand still have some problems...30-Jan-07 18:37
450OldesI just started:)30-Jan-07 18:36
449GrahamOldes, why don't you release a fixed version ?30-Jan-07 18:33
448OldesAnd there is another bug in the UniServe0919 - there should be this in the file %services/task-master/task-handler.r (the [not value?] check is not enough): if any [not value? 'uniserve-path none? uniserve-path] [uniserve-path: what-dir] if any [not value? 'modules-path none? modules-path] [modules-path: dirize uniserve-path/modules] if any [not value? 'uniserve-port none? uniserve-port] [uniserve-port: 9799]30-Jan-07 18:20
447Mcheanthanks - i will look at that30-Jan-07 18:05
446Oldesfor example with this one http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=webserv.r30-Jan-07 18:04
445OldesI'm not sure if you should not start with some older server which are not async30-Jan-07 18:02
444Mcheanto learn about web servers, and rebol commands30-Jan-07 18:00
443OldesI started with uniserve 0.9.9 which is stable enough for me.30-Jan-07 18:00
442Oldeswhat kind of learning?30-Jan-07 17:58
441Mcheanjust a learning tool30-Jan-07 17:58
440OldesI don't know, I never used Rugby and don't know what you want to do:)30-Jan-07 17:57
439Mcheanok thanks - do you think Rugby might be a better choice?30-Jan-07 17:56
438Oldesthe file is probably not in the best shape as there are some probes which are probably because of debugging which was Doc making at the moment when he gave it here30-Jan-07 17:55
437Oldesyou can also change the port you are listening - for example to 808030-Jan-07 17:53
436Oldesjust go to services/HTTPd.r file and edit the prefs30-Jan-07 17:52
435Mcheanmy purpose is to educate myself about servers using Uniserve as a starting point30-Jan-07 17:51
434Mcheanhmm... maybe that's not a good expectation then30-Jan-07 17:51
433McheanNot really, just trying to get the out-of-box experience30-Jan-07 17:50
432OldesAnd if you are using the Uniserve from the link above, you should know, that it's just a shapshot from doc's folder so you have to for example edit some files - for example the default prefs of the HTTPd as they are leading into files which don't exists.30-Jan-07 17:50
431Oldesdo you really need all the protocols? If not, you can start uniserve using this way:

do %uni-engine.r uniserve/verbose: 5 uniserve/boot/no-loop/with [ protocols [irc] services [flashd task-master httpd] ] ;do whatever here do-events

30-Jan-07 17:43
430Mcheanyes, i think im making progress thanks for the help30-Jan-07 4:02
429Grahamdoes the binary work for you?30-Jan-07 1:41
428McheanI figured out how to stop the service tying up the 80 port , When i run this is what I get: >> do %/c/temp/rebol/uniserve/uni-engine.r == true >> uniserve/boot [uniserve] Async Protocol Admin loaded [uniserve] Async Protocol DNS loaded [uniserve] Async Protocol FastCGI loaded [uniserve] Async Protocol HTTP loaded ** Script Error: change expected series argument of type: series port ** Where: install-plugin ** Near: change pos/2 new30-Jan-07 1:31
427Mcheanscary how many open ports i have for processes i can't id29-Jan-07 23:07
426McheanIt turns out I have a inetinfo service running which locks that port. Its used in IIS but since I'm not running it I'm not sure what is using this process, and killing it doesn't work, as it keeps coming back. I will have to investigate using another port29-Jan-07 22:54
425Mcheani found this also on a suggestion from a friend: http://www.hijackfree.de/en/29-Jan-07 20:04
424Pekrnetstat -an29-Jan-07 19:39
423Grahamtry this http://www.microsoft.com/technet/sysinternals/utilities/TcpView.mspx29-Jan-07 19:26
422Grahamnetstat will tell you that 80 is open29-Jan-07 19:21
421Grahamthere are windows utilities to see what ports are opened and by what.29-Jan-07 19:16
420McheanGraham the command fails so i guess something has port 80 tied up though i don't know what this might be. I've tried this on 2 pc's on one the localhost fails with no page found, and on another im prompted for a user password. I'll talk to my tech.29-Jan-07 19:05
419GrahamXP will ask you if you start up a server process if it is to be allowed29-Jan-07 18:01
418McheanWould there be any issues with port blocking in Windows XP and their firewall?29-Jan-07 17:54
417Mcheanthank-you!29-Jan-07 17:27
416Pekr0.9.9 is latest official version. But scroll to some earlier messages here, and you will find link to beta 0.919 version ....29-Jan-07 8:16
415Grahamif that fails, then another process is serving on 80.29-Jan-07 7:42
414Grahamtry : server: open tcp://:8029-Jan-07 7:42
413Grahamopen Rebol29-Jan-07 7:35
412McheanI'm using Version : 0.9.9 Date : 11-Oct-2004 is there perhaps a later version.29-Jan-07 6:43
411McheanLocalhost doesn't respond in the browser, and there is no http2.r file andy other suggestions? I'm have very little experience with servers so don't know where to startt29-Jan-07 6:40
410Oldesunfortunately there are still some issues with this service:(27-Jan-07 17:39
409OldesI started to play with the proxy-http service a little bit and found that there is a bug: the on-error http-event has args: [reason port] not [port reason] !27-Jan-07 17:37
408MikeLEasy to check with http://localhost Sometimes that gives you the home page of the server that is colliding with the one you want.27-Jan-07 0:08
407McheanThanks Pekr, that would be a suprise if i was running a server somewhere26-Jan-07 17:27
406Pekrand if it does not help, you are aparently running some web server on port 80 already ...25-Jan-07 7:21
405PekrMchean - if you are using latest demo version, go to uniserve/protocols, and remove http2.r file - it was mistake of DocKimbel, who mistakenly left the testing file in the archive ...25-Jan-07 7:20
404McheanI've received an error in starter.r: ## Error in [uniserve] : Cannot open server HTTPd on port 80 !25-Jan-07 5:13
403MaartenThey are all 3 abstractions of a lower-level rebol async layer, performance is in the same range.14-Jan-07 18:14
402JoeHow does uniserver tcp async compare with a) async://, b) atcp:// and c) the new async core that may eventually be released (and was available two years ago !)14-Jan-07 17:45
401xaviervery interesting tool ... i go to do a site on it13-Jan-07 10:46
400xavieri just installed cheyenne and tried to explore it ... i found the examples13-Jan-07 10:45
399MaartenAh.... those were the days13-Jan-07 7:26
398PeterWoodDoes this help ? http://www.ross-gill.com/techniques/rsp/13-Jan-07 1:19
397xavierrebol server pages ? will we have samples of it ?12-Jan-07 18:08
396Joesee related post wrt async dns in the core group. Is the behavior mentioned in the core group possible with Uniserve async dns support ?12-Jan-07 11:29
395Willwops, devcon07 ;-)7-Jan-07 1:22
394WillPekr: have forwarded decon07 update request.7-Jan-07 1:22
393Willyou are right! Cheyenne is the http 1.1 webserver6-Jan-07 21:37
392BrianHI may be mistaken though...6-Jan-07 21:36
391BrianHUniserve doesn't do session handling, Petr. You are probably thinking of Cheyenne, which is built on Uniserve.6-Jan-07 21:35
390PekrWill, if you have contact to conference organisers, please urge them to do something with DevCon preparation. Som of us have to plan our plane or bus few months ahead. I would like to see site updated ...6-Jan-07 14:24
389WillI'd say the core is actually stable, have it running with quite some traffic and no problems, there are indeed problems with sessions. Had a sign very recently that let suppose Dock will soon be back, hopefully 8)6-Jan-07 14:04
388RobertOk, thanks for the info.6-Jan-07 9:03
387Pekrit states stable, but it really is not. Doc, before he left scene for another few months :-), stated something like that he has new reimplemented session handling, which is going to be "soon" released. But don't take it for granted, maybe I misunderstood something. But really - sessions do not work properly ... There is a demo with multiple frames, e.g. Mozilla (but even IE) did not open all boxes, there were some errors or timeouts, dunno ...6-Jan-07 8:52
386PekrSession is broken, lot's of usefull stuff not released (RPC, rebol-cgi, fast-cgi, PHP) ....6-Jan-07 8:50
385RobertDoc, do you continue to devleop Universe or is it that matured that it's just working?6-Jan-07 8:15
384ScotOk...thanks.4-Oct-06 22:20
383DockimbelThe MySQL async driver in this archive is an alpha version. It only works with v5+ servers and new passwords format (databases with old passwords for users won't work with this alpha driver).3-Oct-06 19:49
382DockimbelHi Scott, my fault, the release archive contains a duplicate HTTP protocol file, so they collide on loading. Just remove the following file : uniserve/protocols/HTTP2.r3-Oct-06 19:39
381ScotWorking on something else at the moment, but very interested in the Uniserv implementation of MySQL.2-Oct-06 23:17
380ScotI've tried all the versions with asych...but I haven't probed the pos value yet.2-Oct-06 23:16
379Oldeswhat version you are using? and what if you probe the pos value?2-Oct-06 12:25
378ScotNeed some help...Can't seem to get Uniserv working on my XP laptop. This is my first try...so I don't have enough experience to see what is happening. Do I have the wrong version of core?

>> uniserve/boot [uniserve] Async Protocol Admin loaded [uniserve] Async Protocol DNS loaded [uniserve] Async Protocol FastCGI loaded [uniserve] Async Protocol HTTP loaded ** Script Error: change expected series argument of type: series port ** Where: install-plugin ** Near: change pos/2 new >>

2-Oct-06 2:25
377TerryAny benchmarks would be helpful as well.25-Sep-06 23:31
376Terrysoon i hope too, Nenad25-Sep-06 23:30
375DockimbelSure23-Sep-06 9:51
374PekrCan I handle virtual domains with Cheyenne?23-Sep-06 9:50
373DockimbelUniServe is a network programming framework. Cheyenne is web server (with lot of features) using UniServe as low layer.23-Sep-06 9:31
372PekrCheyenne comes with sources? How is it different to Uniserve? Or is it just Uniserve based?23-Sep-06 9:29
371DockimbelTerry, with the release of Cheyenne (soon I hope), you'll get a complete working example of encap-fs library usage.23-Sep-06 9:15
370Oldesbut the modules are loaded when needed, so you should make some more improvements to make one-file build23-Sep-06 7:20
369OldesAnd what exactlu do you want to know, just use #include instead of 'do' and %prebol.r to build it.23-Sep-06 7:19
368TerryHey Nenad.. Any encapping docs would be great.23-Sep-06 1:42
367Will.17-Sep-06 19:25
366DockimbelPlease find here : http://softinnov.org/tmp/UniServe0919.zip a snapshot version of latest UniServe sources. It fixes some of the issues I've been asked about (UDP support for example). It's a beta version, no updated docs, no samples. ChangeLog in %uni-engine.r file. Any questions ? Ask them here, I'll answer as my available time permits.6-Sep-06 21:02
365DockimbelIt could be quite simple in fact (at least in theory) :

1) Send a first message telling the name and size of the file (unprocessed) to transmit 2) Send the file in parts (done automatically by Uniserve) 3) Catch the 'on-write-chunk event to process the chunk data (compress, encode...) then add a header containing : - size of the chunk - a sequence ID (an incremental counter starting with 1, 0 would mean last chunk)

4-Sep-06 20:24

Return to Index Page