必须新建web project呀,websocket还不成熟建议现在不要用,你可以用dwr推送技术实现web即时聊天,技术成熟。

解决方案 »

  1.   

    http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/
    没什么难度 里面说的很详细 自己研究下吧
      

  2.   


    <script type="text/javascript">    // Create a socket
        var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket;
        var socket = new WS('@@{WebSocket.ChatRoomSocket.join(user)}')
        
        // Display a message
        var display = function(event) {
            $('#thread').append(tmpl('message_tmpl', {event: event}));
            $('#thread').scrollTo('max')
        }
        
        // Message received on the socket
        socket.onmessage = function(event) {
            var parts = /^([^:]+):([^:]+)(:(.*))?$/.exec(event.data)
            display({
                type: parts[1],
                user: parts[2],
                text: parts[4]
            })
        }
        
        $('#send').click(function(e) {
            var message = $('#message').val()
            $('#message').val('')
            socket.send(message)
        });
        
        $('#message').keypress(function(e) {
            if(e.charCode == 13 || e.keyCode == 13) {
                $('#send').click()
                e.preventDefault()
            }
        })
        
    </script>
      

  3.   

    服务器端:
    package controllers;import play.*;
    import play.mvc.*;
    import play.libs.*;
    import play.libs.F.*;
    import play.mvc.Http.*;import static play.libs.F.*;
    import static play.libs.F.Matcher.*;
    import static play.mvc.Http.WebSocketEvent.*;import java.util.*;import models.*;public class WebSocket extends Controller {
        
        public static void room(String user) {
            render(user);
        }    public static class ChatRoomSocket extends WebSocketController {
            
            public static void join(String user) {
                
                ChatRoom room = ChatRoom.get();
                
                // Socket connected, join the chat room
                EventStream<ChatRoom.Event> roomMessagesStream = room.join(user);
             
                // Loop while the socket is open
                while(inbound.isOpen()) {
                    
                    // Wait for an event (either something coming on the inbound socket channel, or ChatRoom messages)
                    Either<WebSocketEvent,ChatRoom.Event> e = await(Promise.waitEither(
                        inbound.nextEvent(), 
                        roomMessagesStream.nextEvent()
                    ));
                    
                    // Case: User typed 'quit'
                    for(String userMessage: TextFrame.and(Equals("quit")).match(e._1)) {
                        room.leave(user);
                        outbound.send("quit:ok");
                        disconnect();
                    }
                    
                    // Case: TextEvent received on the socket
                    for(String userMessage: TextFrame.match(e._1)) {
                        room.say(user, userMessage);
                    }
                    
                    // Case: Someone joined the room
                    for(ChatRoom.Join joined: ClassOf(ChatRoom.Join.class).match(e._2)) {
                        outbound.send("join:%s", joined.user);
                    }
                    
                    // Case: New message on the chat room
                    for(ChatRoom.Message message: ClassOf(ChatRoom.Message.class).match(e._2)) {
                        outbound.send("message:%s:%s", message.user, message.text);
                    }
                    
                    // Case: Someone left the room
                    for(ChatRoom.Leave left: ClassOf(ChatRoom.Leave.class).match(e._2)) {
                        outbound.send("leave:%s", left.user);
                    }
                    
                    // Case: The socket has been closed
                    for(WebSocketClose closed: SocketClosed.match(e._1)) {
                        room.leave(user);
                        disconnect();
                    }
                    
                }
                
            }
            
        }
        
    }
    play实现的
      

  4.   

    刚看到有一篇按照javaee7来实现的webscoket的例子。楼主可以参考一下。http://www.prdblog.com/html/index/webscoket.html