The technology you're looking for is websockets.
Websockets create a 2-way persistent connection between the server and client.
Websockets allow the server to broadcast messages to entire groups of connected clients so that if one player makes a move then that move is transmitted through the server to all members of the group.
Depending on the type of your server you might check out these frameworks that make websockets easier to get started with:
Socket.io + node.js: http://socket.io/
Some tips dealing with websockets + canvas:
All drawing commands must be complete--known as "atomic" (beginPath + moveTo + lineTo + stroke) or else local and remote commands will foul each other up.
But if you follow this rule then applying remote draws is simple and straight-forward:
Locally receive a server broadcast containing a remote drawing command.
Save that command in a queue (because the local client may be in the middle of a draw and mustn't be interrupted).
When you are sure the local client is not drawing then apply the queued remote drawing commands.
Hint: it's best of all draws done by every client are done with the same stroke color and line width. Doing otherwise results in different client canvases because of the order in which the draws are applied between clients.