以下代码仅在服务器为非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