both should work.
i've only tried the socket-connection.
my midlet prompts the blackberry-user to register on a servlet, the registration at the PushRegistry is done automaticaly after the servlet registration.
the servlet stores the blackberry's ip and then opens a socket-connection with an output-stream to the blackberry.
this connections invokes the midlets startApp()
beside the articles and examples on sun's j2me pages, you can look at this page corej2me - DeveloperResources
the only blackberry specific think to keep on mind is setting the ;deviceside=true
for registration at the PushRegsitry.
hopes that helps you