Như tôi đã hiểu, từ http://socket.io/#how-to-use, node.js sẽ tự động phục vụ tệp socket.io trên máy chủ.Socket.io không được phục vụ bởi máy chủ Node.js
Tôi đã cài đặt socket.io với npm install socket.io
và tôi có thể thấy rằng nó nằm ở node_modules
một cấp trên gốc máy chủ.
server.js:
var static = require('./plugins/node-static');
var socketIO = require('socket.io');
var clientFiles = new static.Server('./client');
var http = require('http');
httpServer = http.createServer(function (request, response) {
request.addListener('end', function() {
clientFiles.serve(request, response);
});
}).listen(8253);
var webSocket = socketIO.listen(httpServer);
webSocket.on('connection', function(client) { .....
index.html:
<html>
<head>
<title>Chat</title>
</head>
<body>
<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.5.2.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var webSocket = new io.Socket('localhost', { port: 8253 });
webSocket.connect(); .......
Bắt đầu từ máy chủ hoạt động tốt, nhưng khi mở index.html, tôi nhận được lỗi sau:
GET http://localhost:8253/socket.io/socket.io.js 404 (Not Found)
Uncaught ReferenceError: io is not defined :8253/:25
Ý tưởng?
"Tôi có thể thấy rằng nó nằm trong node_modules một cấp trên gốc máy chủ". Những gì bạn có nghĩa là "gốc máy chủ"? Không nhầm lẫn với bất kỳ dấu vết của apache, có lẽ? Các module được cài đặt bởi NPM nằm trong repo NPM, chúng không nhất thiết phải liên quan đến kịch bản nút chính của dự án của bạn. Một thành công 'require ('socket.io')' chỉ ra rằng cài đặt là OK và vấn đề là trong mã. – Kos