Protocols/MSNP/Gateway
MSNP Protocol |
Introduction • Terms • Clients |
Reference |
Error List • Commands • Relying Party Suite • Spotlife |
Services |
XMPP • HTTP Gateway • Tabs • Activities |
Documentation |
Development Tools • MSNP Grid |
Polygamy • URLs used by MSN |
Documents |
Protocol Versions |
Version 21 |
Version 18 |
Version 16 |
Version 15 |
Version 14 |
Version 13 |
Version 12 |
Version 11 |
Version 9 |
Version 8 |
Version 2 |
MSNC |
Introduction • P2P • Object Descriptor • Display Pictures • File Transfer |
Scenarios |
Microsoft Messenger for Mac |
MSNP on WebTV (MSNTV) |
Here is some information about the HTTP gateway used by Messenger if it fails to connect directly to the MSNP server (port 1863).
Hosts
gateway.messenger.hotmail.com muser.gateway.messenger.hotmail.com
Implementation
The gateway is just a proxy for Messenger commands.
First request
The first request is a POST request to the URL /gateway/gateway.dll?Action=open&Server={server type}&IP={server the client tried to connect to}
.
{server type}
is either NS
(Notification server) or SB
(Switchboard server).
The POST body is the VER
command.
This first request should trigger the creation of a session ID in the database. This session ID will be present in the URLs of all subsequent requests to the gateway.
This session ID along with the gateway IP address should be sent in an X-MSN-Messenger
header:
"X-MSN-Messenger": "SessionID={session ID}; GW-IP={IP of the gateway service}"
A Content-Type
header should be added as well:
"Content-Type": "application/x-msn-messenger"
The body of the response is simply the response to the command.
Subsequent requests
Type 1: /gateway/gateway.dll?SessionID={session ID}
The client wants to send a command to the server. The command is in the POST body. Answer with the command response and include the 2 headers as shown above.
Type 2: /gateway/gateway.dll?Action=poll&SessionID={session ID}
The client wants to know if the server has queued any specific command(s) for the current session. Answer with the specified command(s). If the client has no commands to poll, send an empty reply. Include the 2 headers.