我知道这可能是一个愚蠢的问题,但是我正在学习如何使用WebSockets,并且对此有麻烦。 这是我连接套接字服务器的地方
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(global.server);
server.listen(8080, function() {
console.log('Servidor corriendo en http://localhost:8080');
});
io.on('connection', function(socket) {
console.log('Un cliente se ha conectado');
socket.emit('messages', messages);
});
它在终端中工作,我得到正确的消息,在客户端视图中,我有相似之处;
extends ../layout
block content
script(src="http://localhost:3000/socket.io/socket.io.js")
script(src='/javascripts/Enfermero/main.js')
该视图的js。...
var socket = io.connect('http://localhost:8080', { 'forceNew': true });
socket.on('messages', function(data) {
console.log(data);
});
在浏览器中,我总是得到:
GET http://localhost:3000/socket.io/socket.io.js net::ERR_ABORTED 404 (Not Found)
main.js:1 Uncaught ReferenceError: io is not defined
at main.js:1
(anonymous) @ main.js:1
你们能帮我吗? 我做了一些研究,但我有点不明白发生了什么。
答案 0 :(得分:1)
仅使用script(src="/socket.io/socket.io.js")
,socket.io.js位于node_modules/socket.io-client
中,因此应用可以知道该路径。
答案 1 :(得分:0)
不要使用script(src="http://localhost:3000/socket.io/socket.io.js")
,而应尝试使用参考路径script(src="<path to socket.io>/socket.io/socket.io.js")
此外,我认为io
的初始化方式如下:
socket = io('http://localhost');
socket.connect();
在此处参考客户端api的文档:https://socket.io/docs/client-api/
希望这会有所帮助:)