我目前在使用Typescript和socket.io时遇到问题。 我正在尝试使用套接字系统将用户连接到服务器,但是socket.io给我一个404错误,并且没有连接套接字。 更奇怪的是,我的服务器上有一个记录器来显示收到的所有请求...并且确实收到了套接字请求:因此,我的请求确实在正确的位置完成,但仍未检测为套接字一个。
首先,这是我的服务器创建:
import { Application } from 'express'
import * as http from 'http'
import { log } from '../services'
import { db, socket } from '.'
import App from './app.core'
class Server {
public app: Application = new App().app
private server: http.Server
constructor (app: Application) {
this.app = app
this.server = http.createServer(this.app)
}
public async run(): Promise<void> {
await db.run()
this.server.listen(this.app.get('port'), () => {
log.success(`Server is listening on port ${this.app.get('port')} in ${this.app.get('env')} mode`)
})
}
public close(): void {
this.server.close()
log.success(`Server is close`)
}
}
export default Server
然后将服务器作为参数提供给我的套接字系统的构造函数:
import { log } from '../services'
import io from 'socket.io'
import Server from './server.core'
class Socket {
public socket: any
static sockets: any = {}
static getUserSocket (id: any): { userId: String, socket: io.Socket } {
return Socket.sockets[id]
}
static onDisconnection(socket: io.Socket) {
log.debug(socket, 'user disconnected')
// Do things
}
static onConnection(socket: io.Socket) {
log.debug(socket.id, 'user connected')
// Do things
}
constructor(http: Server) {
this.socket = io(http, { path: `/chat/socket.io` })
this.socket.on('connection', Socket.onConnection)
log.debug('Socket initialized')
}
}
export default Socket
现在,当我尝试使用套接字将客户端连接到服务器时,服务器指示服务器确实收到了来自客户端的请求,但返回了404。该请求如下:
GET /chat/socket.io/?EIO=3&transport=polling&t=MvQIY8m - returned 404
让我感到困惑的是,确实输入了“ /chat/socket.io”作为io初始化参数的路径。因此,我看不到哪里出了问题...
非常感谢您的帮助,对于许多英语错误深表歉意!如果需要某些精度或其他可能有用的方法,我会尽力回答!