Websocket无法在所有浏览器的localhost上连接

时间:2016-03-01 14:19:40

标签: javascript python-3.x websocket

以下代码仅在服务器为非localhost时连接

在Chrome中:

var ws = new WebSocket('ws://127.0.0.1:9000');

在Chome控制台:

WebSocket connection to 'ws://127.0.0.1:9000/' failed: Connection closed before receiving a handshake response

我有一个在localhost:9000上运行的websocket服务器。

但是,当我连接到另一台机器上的另一个websocket服务器时,没有这样的问题。

我使用的操作系统是Mac OS X yosemite和服务器的高速公路

服务器脚本:

import asyncio
import sys
import os
import getopt
from autobahn.asyncio.websocket import WebSocketServerFactory

from server_handler import ServerHandler

def main(argv):
    port = ''
    ip_addr = ''

    try:
      opts, args = getopt.getopt(argv,"p:a:",["--port=","--address="])
    except getopt.GetoptError:
      print('WSServer.py -p <port> -a <address>')

    for opt, arg in opts:
        if opt == '-p':
            port = arg
        elif opt == '-a':
            ip_addr = arg

    factory = WebSocketServerFactory()
    factory.protocol = ServerHandler
    loop = asyncio.get_event_loop()

    print(str(ip_addr)+','+str(port))    
    coro = loop.create_server(factory, ip_addr, port)
    server = loop.run_until_complete(coro)

    try:
        print('server is running')
        loop.run_forever()
    except KeyboardInterrupt:
        pass
    finally:
        server.close()
        loop.close()


if __name__ == '__main__':
    main(sys.argv[1:])

server_handler.py

from autobahn.asyncio.websocket import WebSocketServerProtocol

class ServerHandler(WebSocketServerProtocol):
    def onOpen(self):
        pass
    def onConnect(self):
        pass
    def onMessage(self):
        pass

0 个答案:

没有答案