How do I communicate with a specific process in one Erlang node?

142 Views Asked by At

I have an Erlang server which is spawning a new process for each client that connects. Then the Pid of this new process is passed to the client (to make a connection to the new process.) Is that enough to make a connection from a jinterface client?

I am using this to connect from the client first:

final String SERVERNAME = "server";
final String SERVERNODE = "bertil@computer";

mbox.send(SERVERNAME, SERVERNODE, connectClient);

And those names is set in the server when it starts:

start() ->
    net_kernel:start([bertil, shortnames]),
    register(server, self()).

Do I have to register a new name for each spawned process? That would not be so dynamic... How do I solve this? Should I use the main process at the server as a router to send all traffic through?

1

There are 1 best solutions below

0
Adam Lindberg On

Once you have a pid, you should be able to send a message directly to it. In Erlang you don't have to specify a node if you got a pid. You only need a node if you are sending to a registered name since names are only unique per nod. Pids are unique in the whole cluster.

If you have a varable my_pid as an OtpErlangPid object you can send like so:

 mbox.send(my_pid, message);

See the documentation for the send function and chapter 1.6 Sending and Receiving Messages in the Jinterface User's Guide.