【问题标题】:Can socket.io listen/attach to a python http server?socket.io 可以侦听/附加到 python http 服务器吗?
【发布时间】:2014-03-21 16:48:30
【问题描述】:

抱歉,如果我没有使用正确的术语。我有一个运行在 8000 端口的 python HTTP 服务器,基本上相当于

python -m SimpleHTTPServer 8000

如果我尝试使用

在同一端口上创建套接字连接
var io = require('socket.io').listen(8000);

我收到以下错误

warn  - error raised: Error: listen EADDRINUSE

我了解listen(8000) 正在尝试在端口 8000 上创建 HTTP 服务器,但该端口已在使用中,因此出现错误。

所以我的问题是:是否可以在现有的 HTTP 服务器上创建一个套接字连接,该服务器是在 nodejs 之外启动的?也就是说,这段代码中的“服务器”是否可以

var server = require('http').createServer(handler)
var io = require('socket.io').listen(server)

被一个已经运行的 HTTP 服务器取代?

【问题讨论】:

    标签: python node.js socket.io


    【解决方案1】:

    不,您不能让 socket.io 监听在 nodejs 环境之外创建的服务器。而是使用 Python websocket 实现,例如https://github.com/abourget/gevent-socketio。它是python中socket.io协议的实现,兼容多个著名的python服务器。

    否则,我的建议是单独使用 2 个服务器,不要合并它们。这样,您的主要 python 网络服务器就与您的 nodejs websocket 服务器分开了。您可以创建一个单独的 socket.io 服务器,并将其绑定到与您的网络服务器不同的端口:

    var io = require('socket.io').listen(8001);
    

    在前端,你需要像这样连接到不同的 socket.io 服务器:

    var socket = io.connect('http://' + location.hostname + ':8001');
    

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 1970-01-01
      • 2017-08-19
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 2016-12-31
      • 1970-01-01
      相关资源
      最近更新 更多