#javascript #jquery #html #node.js #socket.io
#javascript #jquery #HTML #node.js #socket.io
Вопрос:
Это мой серверный код для создания соединения с сокетом.Я использую node.js код и использование сокета.ввод-вывод в этом.
const path = require('path');
const http = require('http');
const express = require('express');
const socketIO = require('socket.io');
const port = process.env.PORT || 3000;
var app = express();
var server = http.createServer(app);
var io = socketIO(server);
io.on('connection', (socket) => {
console.log('New user connected');
})
и это мой клиентский код, я использую обычный javascript в качестве клиента, и я использую версию 2.1.1 socket.io Я получаю ошибку ввода-вывода not defiend, я очень новичок в socket.io, пожалуйста, помогите мне с этим.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
</head>
<body>
<script>
$(document).ready(function(){
var socket = io('http://localhost:3000');
console.log("Socket connected" socket.connected);
socket.on('notification', function(value){
//insert your code here
});
});
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
</body>
</html>
Ответ №1:
Ваш первый скрипт (тот, который использует io
) выполняется перед вашими другими скриптами (скриптами jQuery и Socket). Перемещайте свои скрипты следующим образом:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script>
$(document).ready(function() {
var socket = io('http://localhost:3000');
console.log("Socket connected" socket.connected);
socket.on('notification', function(value) {
//insert your code here
});
});
</script>
Ответ №2:
Поскольку я новичок в веб-разработке, это может быть неправильно, но я бы попытался разместить ваш скрипт под скриптом, в который вы импортируете socket.io.js
В вашей функции вы вызываете io, но перед ее вызовом, похоже, она не объявлена.
Надеюсь, это сработает.