Environment: Mac osx lion
Grails version: 2.1.0
Java: 1.7.0_08-ea
如果我在 Bootstrap.groovy 中以嵌入模式启动 vertx 并尝试通过多个浏览器访问同一个 websocket 端点,则请求会排队。
因此,根据请求的时间,在一个请求执行完毕后,下一个请求会进入处理程序。
我已经用 websocket 和 SockJs 尝试过这个,并注意到两者的行为相同。
BootStrap.groovy (SockJs):
    def vertx = Vertx.newVertx()
    def server = vertx.createHttpServer()
    def sockJSServer = vertx.createSockJSServer(server)
    def config = ["prefix": "/eventbus"]
    sockJSServer.installApp(config) { sock ->
      sleep(10000)      
    }
    server.listen(8088)
javascript:
<script>
    function initializeSocket(message) {
            console.log('initializing web socket');
            var socket = new SockJS("http://localhost:8088/eventbus");
            socket.onmessage = function(event) {
                console.log("received message");
            }
            socket.onopen = function() {
                console.log("start socket");
                socket.send(message);
            }
            socket.onclose = function() {
                console.log("closing socket");
            }
    }
或者
BootStrap.groovy (Websockets):
    def vertx = Vertx.newVertx()
    def server = vertx.createHttpServer()
    server.setAcceptBacklog(10000);
    server.websocketHandler { ws ->
        println('**received websocket request')
        sleep(10000)
    }.listen(8088)
javascript
socket = new WebSocket("ws://localhost:8088/ffff");
            socket.onmessage = function(event) {
                console.log("message received");
            }
            socket.onopen = function() {
                     console.log("socket opened")
                socket.send(message);
            }
            socket.onclose = function() {
                console.log("closing socket")
            }