/help Sockets
You have to make a server and a client, with your own protocol.
I don't know what suggestions to give you, i've made a chat like that and i still have it, here's the source if you're interested
Code:
alias irc_chat { window -aek0 @irc | background @irc 5 }
on 1:sockopen:irc:{
  if ($sockerr > 0) { irc_wr 7Cannot connect to server. :((( | halt }
  irc_wr 7Connected.
  bset &proto 1 5
  bset &proto 2 9
  bset &proto 3 25
  bset &proto 4 38
  bset &proto 5 1
  bset &proto 6 20
  bset &proto 7 50
  sockwrite -n irc &proto
}
on 1:sockread:irc:{
  sockread %data
  tokenize 32 %data
  if ($1 === NICK) irc_wr 12Use 7/nick 12to set your nickname.
  elseif ($1 === PRINT) irc_wr $2-
  elseif ($1 === JOIN) irc_wr 12 $+ $2 $+  7has joined the chat.
  elseif ($1 === PART) irc_wr 12 $+ $2 $+  7has left the chat.
  elseif ($1 === CHGNICK) irc_wr 12 $+ $2 $+  7is now known as12 $3 $+ .
  elseif ($1 === MSG) aline @irc 12<4 $+ $2 $+ 12> 7 $+ $3- $+ 
}
alias irc_wr {
  if ($window(@irc)) aline @irc 9*** $1-
}
on 1:input:@irc:{
  if ($1 == /conn) {
    if (!$2) { irc_wr 12Syntax: /conn <ip> | halt }
    if ($sock(irc)) irc_wr 12Already connected to a server Use /quit first.
    else { sockopen irc $2 5238 | irc_wr 7Connecting to 12 $+ $2 $+ ... }
  }
  elseif ($1 == /quit) {
    if ($sock(irc)) {
      sockclose irc
      irc_wr 4Disconnected.
    }
    else irc_wr 4Not connected.
    haltdef
  }
  elseif ($1 == /nick) { sockwrite -n irc NICK $2 | haltdef }
  elseif ($mid($1,1,1) == /) irc_wr 12 $+ $1 $+ : Unknown command.
  else {
    if ($sock(irc)) sockwrite -n irc MSG $1-
    else irc_wr 12Not connected.
  }
}
alias irc_server {
  if ($sock(ircserver)) echo -a Server already opened.
  else socklisten ircserver 5238
}
on 1:socklisten:ircserver:{
  var %sockid = ircserver- $+ $ticks $+ - $+ $r(1000,9999)
  sockaccept %sockid
  sockmark %sockid proto
}
on 1:sockread:ircserver-*:{
  sockread &data
  var %data = $remove($bvar(&data,1-).text,$cr,$lf)
  tokenize 32 %data
  var %status = $gettok($sock($sockname).mark,1,32)
  var %nick = $gettok($sock($sockname).mark,2,32)
  if (%status == proto) {
    ;if ($bvar(&data,1-) != 5 9 25 38 1 20 50) { sockwrite -n $sockname PRINT 12Invalid protocol. Disconnecting... | sockclose $sockname }
    if (0) haltdef
    else { sockmark $sockname nick | sockwrite -n $sockname NICK }
    halt
  }
  if (%status == nick) {
    if ($1 != NICK) { sockwrite -n $sockname PRINT 12Register first. }
    elseif ($inuse($2)) sockwrite -n $sockname PRINT 12Nickname in use.
    else {
      if ($len($2) > 12) || (!$regex($2,/^[-a-zA-Z0-9^_`]+$/)) sockwrite -n $sockname PRINT Invalid nick.
      else { sockmark $sockname conn $2 | sockwrite -n $sockname PRINT 12Welcome. | ircserv_massmsg JOIN $2 }
    }
  }
  if (%status == conn) {
    if ($1 === NICK) {
      if ($len($2) > 12) || (!$regex($2,/^[-a-zA-Z0-9^_`]+$/)) sockwrite -n $sockname PRINT Invalid nick.
      elseif (%nick == $2) haltdef
      elseif ($inuse($2)) sockwrite -n $sockname PRINT 12Nickname in use.
      else { sockwrite -n $sockname CHGNICK %nick $2 | sockmark $sockname conn $2 }
    }
    if ($1 === MSG) {
      if ($len($2-) > 500) sockwrite -n $sockname PRINT 12Line too long.
      elseif ($2 == LUSERS) {
        sockwrite -n $sockname MSG ULIST Users list:
        var %i = 1
        while ($sock(ircserver-*,%i)) {
          var %s = $gettok($sock($ifmatch).mark,1,32)
          var %n = $gettok($sock($ifmatch).mark,2,32)
          var %a = $ifmatch
          if (%s == conn) sockwrite -n $sockname MSG ULIST %n $iif($3 == sock,%a)
          inc %i
        }
        sockwrite -n $sockname MSG ULIST $str(-,12)
      }
      else ircserv_massmsg MSG %nick $2-
    }
  }
}
on 1:sockclose:ircserver-*:if ($gettok($sock($sockname).mark,1,32)) ircserv_massmsg PART $gettok($sock($sockname).mark,2,32)
alias inuse {
  var %i = 1
  while ($gettok($sock(ircserver-*,%i).mark,2,32)) {
    var %nick = $ifmatch
    if (%nick == $1) return 1
    inc %i
  }
  return 0
}
alias ircserv_massmsg {
  var %i = 1
  while ($sock(ircserver-*,%i)) {
    var %b = $sock($ifmatch).mark
    var %s = $ifmatch
    if ($gettok(%b,1,32) == conn) sockwrite -n %s $1- 
    inc %i
  }
}