首先確保你發送的消息是JSON(JavaScript Object Notation),因爲這樣可以讓結構化數據來回發送,並且客戶端可以區分聊天消息和指令(例如,某個新登錄的)。例如在客戶端上:
mySocket.onmessage = function(event) {
var command = JSON.parse(event.data);
if(command.type === 'message') {
var message = command.message;
// handle chat message
}
else if (command.type === 'newUser') {
var username = command.username;
// handle new user
}
};
在ASP.NET中C#中的服務器你會送他們爲:
public class ChatHandler : WebSocketHandler
{
private JavaScriptSerializer serializer = new JavaScriptSerializer();
private static WebSocketCollection chatapp = new WebSocketCollection();
public override void OnMessage(string message)
{
var m = serializer.Deserialize<Message>(message);
switch (m.Type)
{
case MessageType.NewUser:
chatapp.Broadcast(serializer.Serialize(new
{
type = "newUser",
username = m.username
}));
break;
case MessageType.Message:
chatapp.Broadcast(serializer.Serialize(new
{
type = "message",
message = m.message
}));
break;
default:
return;
}
}
}
由於Hightechrider說,你需要保持一個列表的軌道連接的客戶端,這就是WebSocketCollection
類在上面的代碼清單中所做的。
在github退房保羅 - 巴圖姆的WebSocket的聊天例子這裏(https://github.com/paulbatum/BUILD-2011-WebSocket-Chat-Samples/blob/master/BasicAspNetChat/ChatHandler.cs)
此外,他在這裏的最近MS BUILD大會(http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-807T)
鐵!這正是我所需要的!非常感謝您指點我正確的方向!我會盡力實施這種方法!這是我的論文!如果我有任何疑問,我可以在這裏問你嗎?在此先感謝您的朋友! – MRFerocius