NaviServer - programmable web server
4.99  5.0

[ Main Table Of Contents | Table Of Contents | Keyword Index ]

ns_sockcallback(n) 4.99.30 naviserver "NaviServer Built-in Commands"

Name

ns_sockcallback - Register a socket callback script

Table Of Contents

Synopsis

Description

ns_sockcallback registers a socket callback script.

COMMANDS

ns_sockcallback sockid script when ?timeout?

The optional argument when can consist of one or more characters of r, w, e, or x, specifying, when the callback should fire. The optional argument timeout can be specified in the form secs?:microsecs?, or secs.fraction, or as a number with a time unit.

When the callback is fired, the specified script will be called with additional arguments sockid and condition. The value of the reported condition will be as follows:

  • r - the socket is readable

  • w - the socket is writable

  • e - the socket has an exceptional condition

  • x - the server is shutting down

  • t - timeout received

EXAMPLES

 set sock [ns_socklisten * 9000]
 ns_sockcallback $sock newconn r
 
 # Keep $sock from closing after connection ends
 detach $sock
 
 # When a connection arrives, newconn will be called as:
 # newconn $sock r
 proc newconn {sock when} {
  set fds [ns_sockaccept $sock]
  set rfd [lindex $fds 0]
  set wfd [lindex $fds 1]
  puts $wfd "Hello!"
  close $rfd
  close $wfd
 }

See Also

ns_chan, ns_connchan, ns_sockaccept, ns_socklisten, ns_sockopen, ns_time

Keywords

NaviServer, callback, global built-in, socket