Ham*_*Ali 3 javascript websocket node.js socket.io ecmascript-6
我想使用 oop 架构和 javascript ES6 语法制作一个聊天应用程序。我不知道如何初始化socket.io。我没有找到任何帮助。
这是我的代码。
import express from 'express';
import http from 'http';
import config from 'config';
import SocketIO from 'socket.io'
const app = express();
const port = config.PORT;
app.set('port', port);
const server = http.createServer(app);
var io = SocketIO(server);
io.on('connection', socket => {
console.log("Socket connected");
});
server.listen(port, () => console.log(`API running on localhost:${port}`));
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用套接字客户端工具连接套接字,它显示连接超时。
小智 7
在我的情况下使用import socketIo from 'socket.io';不起作用。
我使用以下方法解决了这个问题,并将套接字连接到端口 5000 上已有的 Node Express 服务器。
import cors from 'cors';
import { createServer } from 'http';
import { Server } from 'socket.io'; //replaces (import socketIo from 'socket.io')
const httpServer = createServer(app);
const io = new Server(httpServer, { cors: { origin: '*' } });
io.on('connection', (socket) => {
console.log('Connection established');
getApiAndEmit(socket);
socket.on('disconnect', () => {
console.log('Disconnected');
});
});
const getApiAndEmit = (socket) => {
const response = 'response you need';
socket.emit('FromAPI', response);
};
app.set('port', process.env.PORT || 5000);
httpServer.listen(app.get('port'), function () {
var port = httpServer.address().port;
console.log('Running on : ', port);
});
Run Code Online (Sandbox Code Playgroud)
在客户端中,我连接如下:
import React,{ useState, useEffect } from 'react';
import socketIOClient from 'socket.io-client';
const ENDPOINT = 'http://127.0.0.1:5000'; //endpoint port 5000
const MyComponent = () => {
const [response, setResponse] = useState('');
useEffect(() => {
const socket = socketIOClient(ENDPOINT);
console.log(socket);
console.log(ENDPOINT);
socket.on('FromAPI', (data) => {
setResponse(data);
});
}, []);
return <p>{response}</p>
}
export default MyComponent;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7773 次 |
| 最近记录: |