tomcat7.0.40自带的webSocket的例子

来源:互联网 发布:linux 关闭swap分区 编辑:程序博客网 时间:2024/06/02 18:03
由于webSocket是个很新的东西,服务器对它的支持变化频繁,网上的很多例子,放到新版本服务器下不能运行。
比如public class TheWebSocketServlet extends WebSocketServlet,老版本的例子往往少了新加进去的方法。另外,这个方法也变了:public StreamInbound createWebSocketInbound( String protocol )

好在,tomcat自己带了一个webSocket的例子。                                                                           

When you download the distribution of Apache Tomcat (7.0.37 is the latest version at the moment), you will have the examples web application already deployed. It comes with the WebSocket Examples.      

进入tomcat的解压目录,进入bin,用startup.bat启动tomcat
在浏览器中,访问http://localhost:8080/可以看到首页
http://localhost:8080/examples/
点击WebSocket Examples
还支持中文!

各位慢品!



tomcat能怎么痛快地支持中文,我和我的小伙伴们都惊呆了!
最后用bin中的shutdown.bat关闭服务器

在这个目录下可以看到源代码:

D:\tomcat7_40\webapps\examples\WEB-INF\classes\websocket\chat

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package websocket.chat;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.util.Set;import java.util.concurrent.CopyOnWriteArraySet;import java.util.concurrent.atomic.AtomicInteger;import javax.servlet.http.HttpServletRequest;import org.apache.catalina.websocket.MessageInbound;import org.apache.catalina.websocket.StreamInbound;import org.apache.catalina.websocket.WebSocketServlet;import org.apache.catalina.websocket.WsOutbound;import util.HTMLFilter;/** * Example web socket servlet for chat. */public class ChatWebSocketServlet extends WebSocketServlet {    private static final long serialVersionUID = 1L;    private static final String GUEST_PREFIX = "Guest";    private final AtomicInteger connectionIds = new AtomicInteger(0);    private final Set<ChatMessageInbound> connections =            new CopyOnWriteArraySet<ChatMessageInbound>();    @Override    protected StreamInbound createWebSocketInbound(String subProtocol,            HttpServletRequest request) {        return new ChatMessageInbound(connectionIds.incrementAndGet());    }    private final class ChatMessageInbound extends MessageInbound {        private final String nickname;        private ChatMessageInbound(int id) {            this.nickname = GUEST_PREFIX + id;        }        @Override        protected void onOpen(WsOutbound outbound) {            connections.add(this);            String message = String.format("* %s %s",                    nickname, "has joined.");            broadcast(message);        }        @Override        protected void onClose(int status) {            connections.remove(this);            String message = String.format("* %s %s",                    nickname, "has disconnected.");            broadcast(message);        }        @Override        protected void onBinaryMessage(ByteBuffer message) throws IOException {            throw new UnsupportedOperationException(                    "Binary message not supported.");        }        @Override        protected void onTextMessage(CharBuffer message) throws IOException {            // Never trust the client            String filteredMessage = String.format("%s: %s",                    nickname, HTMLFilter.filter(message.toString()));            broadcast(filteredMessage);        }        private void broadcast(String message) {            for (ChatMessageInbound connection : connections) {                try {                    CharBuffer buffer = CharBuffer.wrap(message);                    connection.getWsOutbound().writeTextMessage(buffer);                } catch (IOException ignore) {                    // Ignore                }            }        }    }}



原创粉丝点击